Jasmine typescript - 测试func vs let item = func的问题

时间:2017-01-03 11:17:10

标签: javascript unit-testing typescript jasmine

我正在尝试在茉莉花中测试一个定义如下的函数:

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时仍然未定义。

任何人都可以告诉我这里缺少什么或者如何绕过这个问题?

1 个答案:

答案 0 :(得分:0)

方法addIframemain对象上定义,因为您正在创建匿名构造函数的新实例。因此,您必须使用main.addIframe()代替addIframe()

expect(main.addIframe()).toBe(true);

以下是一个有效的例子:http://jsfiddle.net/bBL9P/508/