从 Jasmine 单元测试加载 Angular 模块

Loading an Angular module from Jasmine unit test

我正在尝试使用 Chutpah 和 Jasmine 在 Visual Studio 中设置我的 Angular 单元测试。

我收到此错误,但不确定原因:

这是我的 timelineservice.js 文件中要测试的代码(在我的 angular 项目中,为我的第一次测试进行了简化)

angular.module('myApp').factory('timelineService',
    [

        function timelineServiceInit(){

            return {
                exciteText: function (msg) {
                    return msg + '!!!';
                }
            };
        }
    ]
);

这是我的单元测试:

describe('basicService tests', function () {
    var myservicenaam;


    // excuted before each "it" is run.
    beforeEach(function () {
        angular.mock.module('myApp', []);
        var $injector = angular.injector(['myApp']);

        var myService = $injector.get('timelineService');
        myservicenaam = myService;
    });



    //it's removed 
});

奇怪的是(恕我直言),当我调试时,代码先转到 'timelineservice.js' 文件,然后模块没有加载(这是正确的)。 我认为测试代码会先 运行 然后加载模块。

在我的测试项目中,我引用了 angular 文件和代码文件。

当我将 angular.module('myApp', []); 代码放入 timelineservice.js 文件时,一切正常。

问题在于您使用的是 setter 模式而不是 getter 模式,因此您的应用无法正确加载。在测试之前尝试以下声明:

 beforeEach(module('myApp'));