我正在尝试在 Jasmine 中测试如下定义的功能:
let main = new function() {
this.addIframe = () => {
try {
$("body").append("<iframe id='myiframe'> </iframe>");
return true;
} catch (err) {
dosomthing();
return false;
}
};
};
我需要这种类型的定义,以便以后在测试服中设置 spy 和类似的东西。但是现在尝试使用以下代码测试返回语句时,我遇到了一个问题:
describe("Function AddIframe", ()=> {
it("should return true if opened iframe",()=>{
expect(addIframe()).toBe(true);
});
问题是我变得未定义,现在我知道这是因为js工作的方式,运行了2步。
我尝试移动到function(){}的定义,但我需要其他测试来使用它。
我测试了将其放入对象中的想法,但是即使使用this.method仍然仍然不确定。
谁能告诉我我在这里错过了什么,或者我可以如何绕过这个问题?
最佳答案
在addIframe
对象上定义了main
方法,因为您正在创建匿名构造函数的新实例。因此,您必须使用main.addIframe()
而不是addIframe()
:
expect(main.addIframe()).toBe(true);
这是一个工作示例:http://jsfiddle.net/bBL9P/508/