如果我有一个变量设置为{}
,则会出现以下匹配错误
// 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({});
});
这是什么原因,你会如何通过通过这种行为?根据茉莉博士
it("should work for objects", function() {
var foo = {
a: 12,
b: 34
};
var bar = {
a: 12,
b: 34
};
expect(foo).toEqual(bar);
似乎toEqual应该测试对象内容?
5条答案
按热度按时间l0oc07j21#
尝试:
expect(result).toMatchObject({})
pexxcrt22#
您可以尝试使用与要计算的对象中存在的对象键相关联的length属性:
如果你正在计算一个非空的对象,你可以用途:
qmelpv7a3#
我认为你的变量超出了app的作用域,在测试用例中,它作为undefined var被执行
rvpgvaaj4#
=〉Code / Doc
vwkv1x7d5#
有两种解决方案:
使用toMatchObject({})
或者尝试使用jest-extended中的toBeEmpty()。
然后像jest中的其他匹配器一样在测试中使用它: