Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript测试-如何比较Jasmine中的两个对象_Javascript_Unit Testing_Tdd_Jasmine - Fatal编程技术网

Javascript测试-如何比较Jasmine中的两个对象

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

Javascript TDD非常新,目前正在使用Jasmine

我比较两个物体时遇到问题

我正在测试的函数被分配了一个作为define传递的对象(我正在使用require)——

这是我的测试:

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));