【问题标题】:Jasmine typescript - issue with testing func vs let item = funcJasmine 打字稿 - 测试 func 与 let item = func 的问题
【发布时间】:2017-01-03 11:17:09
【问题描述】:

我正在尝试在 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 的工作方式,两步运行。

我尝试移至 function(){} 定义,但我需要它用于我的其他测试。 我测试了将其放入对象中的想法,但即使使用 this.method 仍然未定义。

谁能告诉我我在这里缺少什么或如何绕过这个问题?

【问题讨论】:

  • 我不确定这是否对任何人都有帮助,但对我来说这个问题是因为在检查之前已经为我测试的函数定义了一个间谍。所以我只是把测试上移了,不是最简单的,而是解决了当前的问题。

标签: javascript unit-testing typescript jasmine


【解决方案1】:

addIframe 方法是在 main 对象上定义的,因为您正在创建匿名构造函数的新实例。所以你必须使用main.addIframe() 而不是addIframe()

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

这是一个工作示例:http://jsfiddle.net/bBL9P/508/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-06
    • 2017-06-07
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多