我正在尝试在 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/

10-06 04:19