Javascript测试-如何比较Jasmine中的两个对象
Javascript TDD非常新,目前正在使用Jasmine 我比较两个物体时遇到问题 我正在测试的函数被分配了一个作为define传递的对象(我正在使用require)—— 这是我的测试:Javascript测试-如何比较Jasmine中的两个对象,javascript,unit-testing,tdd,jasmine,Javascript,Unit Testing,Tdd,Jasmine,Javascript TDD非常新,目前正在使用Jasmine 我比较两个物体时遇到问题 我正在测试的函数被分配了一个作为define传递的对象(我正在使用require)—— 这是我的测试: define(['init', '../../../src/frameManager'], function (init, frameManager) { ... it("Init to contain property frameManager with type frameManager", fu
define(['init', '../../../src/frameManager'], function (init, frameManager) {
...
it("Init to contain property frameManager with type frameManager", function() {
console.log(init.frameManager)
console.log(frameManager)
expect(init.frameManager).toEqual(jasmine.any(frameManager));
});
....
});
两个控制台日志向我显示完全相同的对象,但我遇到了以下错误:
TypeError: Expecting a function in instanceof check, but got #<Object>
但仍然没有快乐。在这种情况下,我得到以下错误:
Error: Expected Object({ iframe: ({ context: HTMLNode, selector: '#preview-frame' }), frameContents: false, parent: false, templateBody: false, parsedTemplate: false, services: Object({ url: false, type: false, data: false, dataType: false, callback: false, call: Function, set: Function, ajaxService: Function, isEmpty: Function }), init: Function, setOptions: Function, parseIframe: Function, registerEvents: Function, getParsedTemplate: Function, populateIframe: Function }) to equal Object({ iframe: ({ context: HTMLNode, selector: '#preview-frame' }), frameContents: false, parent: false, templateBody: false, parsedTemplate: false, services: Object({ url: false, type: false, data: false, dataType: false, callback: false, call: Function, set: Function, ajaxService: Function, isEmpty: Function }), init: Function, setOptions: Function, parseIframe: Function, registerEvents: Function, getParsedTemplate: Function, populateIframe: Function }).
如您所见,两个对象完全相同。。。
有人有什么建议吗
谢谢。深入比较两个对象的最简单方法是使用下一个条件
JSON.stringify(obj1) == JSON.stringify(obj2);
所以只需修改您的代码
expect(JSON.stringify(init.frameManager)).toEqual(JSON.stringify(frameManager));
如果在测试中多次使用对象比较,请考虑创建
您滥用了茉莉花.AN()函数。从你的代码中删除它,它应该可以工作谢谢你,我试过了,但是没有工作。我会更新更多细节。JSON.stringify(obj1) == JSON.stringify(obj2);
expect(JSON.stringify(init.frameManager)).toEqual(JSON.stringify(frameManager));