का उपयोग करता है मेरे पास एक साधारण नियंत्रक है और पहली चीज़ जो मुझे करने की ज़रूरत है वह दायरे के लिए एक मूल्य असाइन करता है।
function TestCtrl($scope, $http) {
$scope.listForms = 'some list';
}
नियंत्रक के लिए निम्नलिखित परीक्षण के रूप में उम्मीद काम करता है:
describe('Testing a controller', function() {
var ctrl, scope, httpMock;
beforeEach(inject(function($injector) {
scope = $injector.get('$rootScope').$new();
ctrl = $injector.get('$controller');
ctrl(TestCtrl, { $scope: scope });
}));
it("assigns to scope", function() {
expect(scope.listForms).toMatch("some list");
});
});
लेकिन जब मैं समारोह बदल मेरी एपीआई
function TestCtrl($scope, $http) {
$http.get('/api/listForms').success(function(list) {
$scope.aListOfForms = 'some list';
});
}
और
को परीक्षण परिवर्तन से सूची प्राप्त करने केdescribe('Testing a controller', function() {
var ctrl, scope, httpMock;
beforeEach(inject(function($injector) {
httpMock = $injector.get('$httpBackend');
scope = $injector.get('$rootScope').$new();
httpMock.when('GET', '/tactical/api/listOrderForms').respond("an order form");
ctrl = $injector.get('$controller');
ctrl(TestCtrl, {
$scope: scope,
$http: httpMock
});
}));
it("gets the list from the api and assigns it to scope", function() {
httpMock.expectGET('tactical/api/listOrderForms');
expect(scope.orderFormList).toMatch("an order form");
httpMock.flush();
});
});
मैं ge निम्नलिखित त्रुटियों में नहीं:
TypeError: 'undefined' is not a function
Expected undefined to match 'an order form'.
Error: No pending request to flush !
क्या कोई जानता है कि मैं क्या गलत कर रहा हूं? अग्रिम में धन्यवाद।
धन्यवाद जिसने वास्तव में मदद की है, मुझे मूर्खतापूर्ण। –
लेकिन कहीं भी आपने $ httpBackend के वास्तविक कार्यान्वयन को संशोधित नहीं किया है। तो एंगुलर को कॉल करने के बारे में पता नहीं है (जो कुछ भी) असली $ httpBackend ऑब्जेक्ट पर विधियां हैं, लेकिन इसके बजाय httpMock को कॉल करते समय httpMock को कॉल करें? मैं यहां बहुत उलझन में हूं (कोणीय से नया) – Nikhil
निखिल, $ http $ http बैकएंड के लिए पूछेगा जब $ http प्रारंभ हो जाएगा। $ httpBackend एक सिंगलटन है (केवल एक उदाहरण मौजूद है) और httpMock इसका संदर्भ है। इस $ httpBackend इंस्टेंस पर कॉलबैक पंजीकृत करना और सामान करना जो परीक्षण और $ http के बीच साझा किया जाता है, यह काम करता है। –