14
我有一個簡單的服務,我試圖進行單元測試。無論我嘗試什麼,searchService都是一個未知的提供者,或者服務是空的(奇怪的是,這不會導致我的測試失敗!!)。使用Jasmine測試簡單的AngularJS服務
任何人都知道我可能會做錯什麼?
angular.module('app').service('searchService', function($q, _) { // _ is lodash
var cache = [
{
id: "current",
name: "Current",
description: "Search current data"
},
{
id: "historical",
name: "Historical",
description: "Search historical data"
}
];
this.getSearchOptions = function() {
var deferred = $q.defer();
deferred.resolve(angular.copy(cache));
return(deferred.promise);
};
this.getSearchOptionsByID = function(id) {
var deferred = $q.defer();
var searchOption = _.findWithProperty(cache, "id", id);
if (searchOption) {
deferred.resolve(angular.copy(searchOption));
} else {
deferred.reject();
}
return(deferred.promise);
};
}
);
我想創建一個單元測試,在searchService負荷,所以我可以檢查緩存值:
describe("Unit: Testing Services", function() {
describe("Search Service:", function() {
var service = null;
beforeEach(function() {
angular.module('app').service('_');
});
// I've also tried the commented out code below
//beforeEach(inject(function(searchService) {
//this.service = searchService;
//}));
//it('should contain an searchService', invoke(function(service) {
it('should contain an searchService', function(searchService) {
expect(searchService).not.to.equal(null);
});
it('should contain two search options', function(searchService) {
expect(searchService.getSearchOptions()).to.equal(2);
});
});
});
它得到了我正朝着正確的方向前進。謝謝!我放棄了angular.module('app'),只是做了模塊('app')。然後改變注入(這是遲到了,猜測我的手指有自己的想法) – nathasm 2013-03-25 02:08:12
很高興聽到。作爲一個方面說明,實際上module('app')是angular.mock.module('app')的一個快捷方式,它允許你創建真實模塊的模擬。 – Flolagale 2013-03-25 12:47:06