【问题标题】:Module not found error in AngularJS unit testAngularJS单元测试中未找到模块错误
【发布时间】:2014-03-14 16:34:38
【问题描述】:

我正在尝试使用 Karma/Jasmine 进行一个非常简单的测试,以对我的 AngularJS 应用程序进行单元测试。这似乎有效

beforeEach(
        module('myApp')
);

it('should blah', function () {
    expect(true).toBe(true);
});

虽然没有

beforeEach(
    function () {
        module('myApp')
    }
);

it('should blah', function () {
    expect(true).toBe(true);
});

我希望能够在每个测试套件之前做其他事情,但这并没有给我任何有意义的错误来调试它,我看到的唯一一个是

TypeError: 'undefined' is not an object (evaluating 'currentSpec.queue.running')

与第二个示例中的 beforeEach 构造中调用函数的行有关。

我希望其他人遇到过这个问题并可以提供帮助?

谢谢 斯蒂芬

【问题讨论】:

  • 我想调用module(..)会返回一些有意义的东西,而function(){ module(..); }会返回这个函数(作为beforeEach( arg )的一个参数)即使调用那个函数return也没有任何意义。
  • 你不能每次都打几次,可以吗?

标签: javascript angularjs gruntjs jasmine karma-runner


【解决方案1】:

这就是你声明你的模块的方式。如果你想做更多,你可以使用一个额外的 beforeEach。

例如:

var scope;
var ctrl;
var mysvcMock;

beforeEach(module('myApp'));

beforeEach(function() {
    mysvcMock = {

    };
});

beforeEach(inject(function($rootScope, $controller) {
    scope = $rootScope.$new();
    ctrl = $controller('MyController', {
        $scope: scope,
        mysvc: mysvcMock
    });
}));

//it checks

如果您需要更清楚地说明这一点,请告诉我,我可以为您准备一个小提琴。

谢谢,

约旦

【讨论】:

  • 感谢 Jordan,帮了大忙!
  • 我需要更清楚乔丹,因为我不明白你的解决方案,但我有与@stephenmc 相同的错误,请看这里:stackoverflow.com/questions/23480873/… 如果你能提供帮助会很好:)
猜你喜欢
  • 1970-01-01
  • 2023-03-30
  • 2016-06-05
  • 2018-08-05
  • 1970-01-01
  • 2018-12-27
  • 2018-03-05
  • 2020-01-18
  • 2014-03-22
相关资源
最近更新 更多