Mam prostą usługę, którą próbuję przeprowadzić test jednostkowy. Bez względu na to, co próbuję, albo usługa wyszukiwania jest nieznanym dostawcą, albo usługa ma wartość zerową (co w dziwny sposób nie spowoduje niepowodzenia mojego testu !!).Testowanie prostej usługi AngularJS przy użyciu Jasmine
Ktoś ma wgląd w to, co robię źle?
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);
};
}
);
Próbuję utworzyć testów jednostkowych, że ładunki w Zlecenie wyszukiwania, więc mogę sprawdzić buforowane wartości:
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);
});
});
});
Zrobiło ja zmierzam we właściwym kierunku. Dzięki! Zrzuciłem angular.module ("app") i właśnie zrobiłem moduł ("app"). A potem zmieniono wywołanie na wstrzyknięcie (było późno, zgadnij, że moje palce miały własny umysł). – nathasm
Miło słyszeć. Na marginesie, faktycznie moduł ("app") jest skrótem dla angular.mock.module ("app"), który pozwala na tworzenie makiet swojego prawdziwego modułu. – Flolagale