在Jasmine中测试空对象失败
Testing empty object in Jasmine fails
如果变量设置为{}
,则以下匹配错误
// Somewhere in my angular controller
self = this;
self.myVar = {};
// In my test file
// This errors out. I console.log myVar to make sure that it is indeed {}
expect(myVar).toEqual({});
// Note if I define myVar = {} in the same test spec it works
it('test', function(){
var myVar = {};
expect(myCtrl.myVar).toEqual({});
expect({}).toEqual({});
});
造成这种情况的原因是什么?你会如何忽略这种行为?根据Jasmine doc
it("should work for objects", function() {
var foo = {
a: 12,
b: 34
};
var bar = {
a: 12,
b: 34
};
expect(foo).toEqual(bar);
似乎toEqual应该测试对象内容?
尝试:expect(result).toMatchObject({})
您可以尝试使用与要评估的对象中存在的对象键关联的长度属性:
expect(Object.keys(res).length).toBe(0); // or not.toBeGreaterThan(0)
如果您正在评估一个非空对象,您可以使用:
expect((Object.keys(res)).length).toBeGreaterThan(0) // or not.toBe(0)
我认为您的变量超出了应用程序的范围,在测试用例中,它被执行为未定义的var
var empty = jasmine.empty();
expect(empty.asymmetricMatch(myvar));
=>代码/文档
有两种解决方案:
使用toMatchObject({})
或者尝试使用来自jot-extended的toBeEmpty()。
-首先,安装扩展的jest:
npm install --save-dev jest-extended
然后在你的测试中使用它,就像其他来自笑话:的匹配者一样
expect(result).toBeEmpty()
相关文章:
- 带有对象解析的响应javascript ajax失败
- 在数组中插入对象失败
- 剑道网格-插入具有外部列的新对象失败
- 从php获取javascript中的json对象失败
- 为什么当我使用变量而不是整数或字符串时初始化日期对象失败
- Javascript Date 对象失败
- 在Jasmine中测试空对象失败
- 在GWT中将JavaScriptObject转换为Java对象失败
- 在IE8中初始化另一个对象内部的对象失败
- 向阵列添加对象失败
- 日志含义传递JSON对象失败
- Javascript函数创建新对象失败
- Json请求向PHP传递Json对象失败
- 创建新对象失败,错误代码:没有找到用于更新/删除的对象
- JavaScript -对象失败
- 创建动态对象失败
- 解析json字符串为JavaScript对象失败
- 在内容脚本中使用jQuery获取DOM对象失败
- IoT/WinJS/VS -创建web诊断对象失败
- JS运行函数在多个dim对象失败.不确定这是否可能