javascript - How to check if object contains an item using Jasmine -


i using karma , jasmine testing framework. code:

it('add() should add x reply object', function() {     spyon(ctrl, 'addxreply');     ctrl.reply = {};     ctrl.reply.post = 'test post';     ctrl.add();     expect(ctrl.addxreply).tohavebeencalled();     console.log(ctrl.reply);     expect(ctrl.reply).tocontain('x'); }); 

this ctrl.add():

self.add = function() {     self.reply['x'] = self.posts[0].id;     self.addxreply(); }; 

the problem is, when run code, returns:

log: object{post: 'test post', x: undefined} chromium 48.0.2564 (ubuntu 0.0.0) controller: mainctrl add() should add x reply object failed     expected object({ post: 'test post', x: undefined }) contain 'x'. 

as can see, reply object contain x line expect(ctrl.reply).tocontain('x'); still failing. idea how can verify object contains x?

you have bug in created vs what's expected. notice line:

self.reply['x'] = self.posts[0].id; 

it expects ctrl have property "posts" array has index 0 has property named id. every 1 of conditions fails

you instead defined singular property (not array) under ctrl's property reply:

ctrl.reply.post 

you need change test code:

it('add() should add x reply object', function() {     spyon(ctrl, 'addxreply');     ctrl.reply = {};      //ctrl needs array named "posts" 1 index     //containing object "id" property     ctrl.posts = [ { "id": 'test post' } ];      ctrl.add();     expect(ctrl.addxreply).tohavebeencalled();     console.log(ctrl.reply);     expect(ctrl.reply).tocontain('x'); }); 

Comments

Popular posts from this blog

Delphi XE2 Indy10 udp client-server interchange using SendBuffer-ReceiveBuffer -

Qt ActiveX WMI QAxBase::dynamicCallHelper: ItemIndex(int): No such property in -

Enable autocomplete or intellisense in Atom editor for PHP -