कहा गया है मेरे पास AngularJS नियंत्रक में परिभाषित एक विधि है जिसे प्रारंभ करने पर कहा जाता है। मैं जैस्मीन ("jasmine-core": "^2.3.4", "karma": "^0.12.37"
) का उपयोग करके इसका परीक्षण करना चाहता हूं। मैं इंटरनेट और स्टैक ओवरफ्लो प्रश्नों पर कुछ ट्यूटोरियल्स का पालन करता हूं, लेकिन मुझे सही जवाब नहीं मिल रहा है।जैस्मीन नियंत्रक परीक्षण, अपेक्षित जासूस को
नियंत्रक usersAddUserController
:
(function() {
'use strict';
angular.module('app.users.addUser')
.controller('usersAddUserController', ['$scope', 'usersAddUserService', function ($scope, usersAddUserService) {
usersAddUserService.getCountryPhoneCodes().then(function (phoneCodes) {
$scope.phoneCodes = phoneCodes;
});
}]);
}());
जैस्मीन परीक्षण: कृपया इस कोड पर एक नज़र डालें
(function() {
'use strict';
describe('usersAddUserControllerUnitTest', function() {
var scope, deferred, objectUnderTest, mockedAddUserService;
beforeEach(module('app'));
beforeEach(inject(function ($rootScope, $q, $controller) {
scope = $rootScope.$new();
function emptyPromise() {
deferred = $q.defer();
return deferred.promise;
}
mockedAddUserService = {
getCountryPhoneCodes: emptyPromise
};
objectUnderTest = $controller('usersAddUserController', {
$scope: scope,
usersAddUserService: mockedAddUserService
});
}));
it('should call getCountryPhoneCodes method on init', function() {
//when
spyOn(mockedAddUserService, 'getCountryPhoneCodes').and.callThrough();
deferred.resolve();
scope.$root.$digest();
//then
expect(mockedAddUserService.getCountryPhoneCodes).toHaveBeenCalled();
});
});
}());
परीक्षण चल रहा है, त्रुटि संदेश है के बाद:
PhantomJS 1.9.8 (Windows 7 0.0.0) usersAddUserControllerUnitTest should call getCountryPhoneCodes method on init FAILED
Expected spy getCountryPhoneCodes to have been called.
मैं जाहिर है कुछ याद आ रही है, लेकिन मैं यह नहीं समझ सकता कि यह क्या है। किसी भी तरह की सहायता को आभार समझेंगे।
उत्तर के लिए धन्यवाद, लेकिन दुर्भाग्यवश अभी भी आपके कोड के साथ एक ही त्रुटि हो रही है। क्या यह आपके लिए काम कर रहा है? –
मैंने वास्तव में इसे आजमाया नहीं था, यह सिर्फ स्पष्ट मुद्दे की तरह दिखता था। क्या आप अपने कंट्रोलर कन्स्ट्रक्टर पर ब्रेकपॉइंट डाल सकते हैं और देख सकते हैं कि वास्तव में यह जासूस है जिसे कॉल कर रहा है? – Martin
बहुत बहुत धन्यवाद दोस्तों! वास्तव में @juunas सही था, मुझे अब सफलता मिली है। अगर जुनास सहमत हैं, तो मैं मार्टिन के जवाब को वैसे भी स्वीकार करूंगा, इससे मुझे बहुत मदद मिलती है :) –