如何使用茉莉花检查对象是否包含项目
How to check if object contains an item using Jasmine
我正在使用业力和茉莉花作为我的测试框架。这是我的代码:
it('add() should add x to the 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');
});
这是我的ctrl.add():
self.add = function() {
self.reply['x'] = self.posts[0].id;
self.addxReply();
};
问题是,当我运行代码时,它返回的内容如下:
LOG: Object{post: 'test post', x: undefined}
Chromium 48.0.2564 (Ubuntu 0.0.0) Controller: MainCtrl add() should add x to the reply object FAILED
Expected Object({ post: 'test post', x: undefined }) to contain 'x'.
如您所见,我的回复对象确实包含x
但行expect(ctrl.reply).toContain('x');
仍然失败。知道如何正确验证我的对象是否包含x
吗?
您在创建的内容与预期内容方面存在错误。请注意此行:
self.reply['x'] = self.posts[0].id;
它期望ctrl
有一个属性"posts",该数组是一个具有索引的数组,0
该数组具有一个名为 id
的属性。这些条件中的每一个都失败了
相反,您在ctrl的属性reply
下定义了一个单一属性(而不是数组):
ctrl.reply.post
您需要更改测试代码:
it('add() should add x to the reply object', function() {
spyOn(ctrl, 'addxReply');
ctrl.reply = {};
//ctrl needs an array named "posts" with one index
//containing an object with an "id" property
ctrl.posts = [ { "id": 'test post' } ];
ctrl.add();
expect(ctrl.addxReply).toHaveBeenCalled();
console.log(ctrl.reply);
expect(ctrl.reply).toContain('x');
});
相关文章:
- 此行是否包含函数声明
- 查找对象数组是否包含其中一个标记的最快方法
- 如何使用JQuery检查输入(电子邮件)字段是否包含特殊字符
- 检查数组是否包含
- 在添加或删除之前,正在使用检查classList是否包含类
- 确定数组是否包含偶数
- 如何检查 iframe 中的锚标记是否包含 URL
- 检查选择器在jQuery中是否包含文本(即不是媒体)
- 检查字符串是否包含计算
- 使用 javascript 检查元素是否包含子标记而不是文本
- 使用 Chai - 如何检查对象属性是否包含 DOM 元素
- 测试两个变量是否包含一些数据 JavaScript
- 如何检查列表是否包含 javascript 中的字符串
- immutablejs:查找映射是否包含键值
- 检查上一个(-1&-2)url是否包含字符串
- 如何检查url是否包含多个字符串.Javascript/jquery
- 检查数组是否包含指定的对象
- 如何检查字符串是否包含非英语字符列表
- 检查Javascript是否包含某种方法
- 检查字符串是否包含数组中的某个字符串