2015-09-11 77 views
0

我有以下的測試代碼:

describe("EmployeeService", function() { 
var appUrl = "https://api.mongolab.com/api/1/databases/kursevi-angular/collections"; 

beforeEach(module("app")); 

it("should request all employees endpoint", inject(function(employeeService, $httpBackend) { 
    $httpBackend.expectGET(appUrl + "/employees?apiKey=myKey"); 
    radnikService.query(); 
    $httpBackend.flush(); 
})); 
}); 

我定義我的員工的模塊,像這樣:

(function() { 
'use strict' 

angular 
    .module('app',['employee']); 
})(); 


(function() { 
'use strict' 

angular 
    .module('employee',['ngResource']); 
})(); 

,我的服務只是一個普通的$資源工廠:

(function() { 
'use strict' 

angular 
    .module('employee') 
    .factory('employeeService', employeeService); 

employeeService.$inject = ['$resource']; 
function employeeService($resource) { 
    return $resource("https://api.mongolab.com/api/1/databases/kursevi-angular/collections/employees/:employee", { apiKey: "myKey", employee: "@id"}, { update: { method: 'PUT' } }); 
} 
})(); 

我收到以下錯誤:

minErr/<@http://localhost:9876/base/assets/js/angular.js:68:12 
loadModules/<@http://localhost:9876/base/assets/js/angular.js:4408:15 
[email protected]://localhost:9876/base/assets/js/angular.js:336:11 
[email protected]://localhost:9876/base/assets/js/angular.js:4369:5 
[email protected]://localhost:9876/base/assets/js/angular.js:4294:11 
[email protected]://localhost:9876/base/assets/js/angular-mocks.js:2415:44 
[email protected]://localhost:9876/base/node_modules/karma-jasmine/lib/jasmine.js:1510:9 
[email protected]://localhost:9876/base/node_modules/karma-jasmine/lib/jasmine.js:1498:9[...] 

我karma.config.js包含以下文件:

files: [ 
    'assets/js/angular.js', 
    'assets/js/angular-resource.js', 
    'assets/js/angular-mocks.js', 
    'app/app.module.js', 
    'app/components/radnik/radnik.module.js', 
    'app/**/*.js', 
    '**/*.html' 
], 

我只是按照建立在角1.3.3的教程(我使用1.4.5)和代碼正好是這個。自那以後有什麼改變,或者我錯過了什麼?當我運行它時,我的程序正常工作,但測試似乎不遵循套件。

+0

使用的角非精縮版本有更多的可讀的錯誤消息。 –

+0

當我嘗試你的代碼時,你的'return $ resource line'行有一個分析錯誤。請解決這個問題。 – Koen

+0

您在'employee'模塊上註冊了'employeeService',但您似乎在測試'app'模塊。這看起來不正確。 – Koen

回答

1

可能因爲您正在使用$resource服務而錯過ngResource服務。

angular 
 
    .module('employee', ['ngResource']) 
 
    .factory('employeeService', function employeeService($resource) { 
 
    return $resource("https://api.mongolab.com/api/1/databases/kursevi-angular/collections/employees/:employee", { 
 
     apiKey: "myKey", 
 
     employee: "@id" 
 
    }, { 
 
     update: { 
 
     method: 'PUT' 
 
     } 
 
    }); 
 
    }); 
 

 
describe("EmployeeService", function() { 
 
    var appUrl = "https://api.mongolab.com/api/1/databases/kursevi-angular/collections"; 
 

 
    beforeEach(module("employee")); 
 

 
    it("should request all employees endpoint", inject(function(employeeService, $httpBackend) { 
 
    $httpBackend.expectGET(appUrl + "/employees?apiKey=myKey").respond(200); 
 
    employeeService.query(); 
 
    $httpBackend.flush(); 
 
    })); 
 
});
<link href="//safjanowski.github.io/jasmine-jsfiddle-pack/pack/jasmine.css" rel="stylesheet" /> 
 
<script src="//safjanowski.github.io/jasmine-jsfiddle-pack/pack/jasmine-2.0.3-concated.js"></script> 
 
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular-resource.min.js"></script> 
 
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular-mocks.js"></script>

+0

不是這樣,我用我的karma.config.js中的文件數組更新了我的代碼。 – user2352164

+0

@ user2352164更新到提供的代碼 - 隨意按「運行代碼剪切」運行代碼片段。顯示如何定義依賴關係到** ngResource ** –

+0

添加了定義 – user2352164

相關問題