我正在尝试在茉莉花中测试一个定义如下的函数:
let main = new function() {
this.addIframe = () => {
try {
$("body").append("<iframe id='myiframe'> </iframe>");
return true;
} catch (err) {
dosomthing();
return false;
}
};
};
我需要这种类型的定义,以便稍后在测试套装中设置间谍和类似的东西。但是现在我在尝试使用此代码测试返回语句时遇到了问题:
describe("Function AddIframe", ()=> {
it("should return true if opened iframe",()=>{
expect(addIframe()).toBe(true);
});
问题是我得到了未定义,现在我明白这是因为js的工作方式,步骤为2步。
我尝试移动到一个函数(){}定义,但我需要它用于我的其他测试。 我测试了将它放在一个对象中的想法,但即使在使用this.method时仍然未定义。
任何人都可以告诉我这里缺少什么或者如何绕过这个问题?
答案 0 :(得分:0)
方法addIframe
在main
对象上定义,因为您正在创建匿名构造函数的新实例。因此,您必须使用main.addIframe()
代替addIframe()
:
expect(main.addIframe()).toBe(true);
以下是一个有效的例子:http://jsfiddle.net/bBL9P/508/