【问题标题】:Angular-mocks error instantiating $rootScope实例化 $rootScope 的角度模拟错误
【发布时间】:2014-11-26 21:08:41
【问题描述】:

我有一个非常简单的 Mocha 测试(我看过几十遍的代码副本)

当我运行它时,角度模拟似乎成功加载了注入的资源及其所有依赖项,并成功进入第 9 行。当我进入 $rootScope.new() 函数时,它直接进入 catch 块。

用 e 表示“未定义不是函数”

我不明白这里发生了什么。变量 blockFns[i] 是一个函数,或者至少 Chrome 调试器说它是一个函数。所以我不明白为什么对 injector.invoke 的调用失败。这是堆栈跟踪。

【问题讨论】:

    标签: angularjs unit-testing angular-mock


    【解决方案1】:

    您需要在调用$rootScope.$new() 之前注入$rootScope,如下所示:

    var $rootScope;
    beforeEach(inject(function($injector){
      $rootScope = $injector.get('$rootScope');
    }));
    

    更新

    实际上问题在于它应该是$rootScope.$new() 而不是$rootScope.new()

    【讨论】:

    • 你能解释一下为什么你的代码(我不记得曾经见过)可以工作,而我使用的代码(我到处都可以看到!!!)不能工作吗?
    • 这在功能上与beforeEach(inject(function($rootScope){ scope = $rootScope.$new(); })); 没有什么不同。你只是得到一个主观上更清洁的人。问题是调用的方法应该是.$new(),而不是.new()
    • 我刚刚想通了。谢谢。
    • @user2943490 是对的。我已经更新了我的评论。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-11-16
    • 2018-11-14
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    相关资源
    最近更新 更多