ReferenceError:AngularJS 未通过 Jasmine 单元测试在 Karma 上定义

pfr*_*e99 3 unit-testing angularjs karma-jasmine

实际上我被困了几个小时,我的老板希望我继续对上周编写的功能进行单元测试,当我开始 karma start 时,karma.conf.js它给了我以下问题:

"message": "An error was thrown in afterAll\nUncaught ReferenceError: angular is not defined",

我的文件结构:

webapp
    -www
        -services
            api.service.js
    -test
        test.test.js
    karma.conf.js
Run Code Online (Sandbox Code Playgroud)

karma.conf.js 的要点:

module.exports = function(config) {
  config.set({
  files: [
    'www/js/services/api.service.js',
    'test/**/*.test.js'
  ],
})
}
Run Code Online (Sandbox Code Playgroud)

我认为 Karma 找不到我的 api.service.js 但我不知道为什么,AngularJS 代码实际上在 Web 应用程序中工作。

我的 test.test.js 的内容:

(function() {
'use strict';

   describe('apiService', function() {

     it('should return an array of object', function() {
     var artist = typeof getArtist(118680); // MGMT Artist
     console.log(artist);
     expect(artist).toEqual('array');
     });
   });
})();
Run Code Online (Sandbox Code Playgroud)

getArtist 是我需要测试的函数,位于 api.service.js 中。

谢谢你,

保罗.

小智 5

Karma 需要 Angular 文件来测试 AngularJS 代码。您需要将其包含在 karma 配置的文件数组中。

module.exports = function(config) {
  config.set({
  files: [
    'path-to-angular.js',
    'www/js/services/api.service.js',
    'test/**/*.test.js'
  ],
 })
} 
Run Code Online (Sandbox Code Playgroud)