【问题标题】:Anonymous function in Coffeescript how to test itCoffeescript中的匿名函数如何测试它
【发布时间】:2012-01-04 17:44:06
【问题描述】:

我知道 Stackoverflow 中有很多关于这个的讨论,但我无法得到一个直接的答案。而且我对coffeescript知之甚少。

基本上,我有这个咖啡脚本

return42 = -> 42

当我编译时,我得到了这个

(function() { var return42; return42 = function() { return 42; }; }).call(this);

所以它被包裹在匿名函数中,它没有暴露给世界。所以当我写这个测试时

describe "Test number", -> it "is 42", -> expect(return42()).toBe 42

测试将失败,因为 return42() 未定义。我怎么能解决这个问题。

非常感谢。 :-)

【问题讨论】:

    标签: javascript coffeescript jasmine


    【解决方案1】:

    您需要一个全局变量作为程序的入口点。您可以通过将函数附加到全局对象而不是将其保留在函数的本地来实现这一点。试试这个:

    @return42 = -> 42
    

    这会给你:

    (function() {
      this.return42 = function() {
        return 42;
      };
    }).call(this);
    

    如果你只在浏览器中运行它而不是 Node.js,那么附加到 window 而不是 this 会更习惯使用,即使在这种情况下它们都是全局对象。

    【讨论】:

      【解决方案2】:

      虽然 Jimmy 是对的,但我要补充一点,如果您不需要公开该函数,则无需对其进行测试。而是测试使用该函数的公共 API。只要您的公共 API 依赖于您的私有实现,那么如果私有函数也失败,那么测试也应该失败。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-09
        • 1970-01-01
        • 1970-01-01
        • 2016-09-09
        • 1970-01-01
        • 2012-04-18
        • 2012-04-15
        • 1970-01-01
        相关资源
        最近更新 更多