मैं इकाई परीक्षण करने के लिए चमेली उपयोग कर रहा हूँ एक AngularJS नियंत्रक है कि एक सेवा विधि है कि एक वादा ऑब्जेक्ट बुला के परिणाम के दायरे पर एक चर सेट में हल नहीं किया जा रहा वादा सेवा:AngularJS इकाई परीक्षण
function getStuff() {
return $http.get('api/stuff').then(function (httpResult) {
return httpResult.data;
});
}
यह मेरे कोणीय अनुप्रयोग के संदर्भ में ठीक काम करता है, लेकिन जैस्मीन यूनिट परीक्षण में काम नहीं करता है। मैंने पुष्टि की है कि "फिर" कॉलबैक यूनिट परीक्षण में निष्पादित हो रहा है, लेकिन $ scope.myVar वादा कभी भी कॉलबैक के वापसी मूल्य पर सेट नहीं हो जाता है।
मेरे इकाई परीक्षण:
describe('My Controller', function() {
var scope;
var serviceMock;
var controller;
var httpBackend;
beforeEach(inject(function ($rootScope, $controller, $httpBackend, $http) {
scope = $rootScope.$new();
httpBackend = $httpBackend;
serviceMock = {
stuffArray: [{
FirstName: "Robby"
}],
getStuff: function() {
return $http.get('api/stuff').then(function (httpResult) {
return httpResult.data;
});
}
};
$httpBackend.whenGET('api/stuff').respond(serviceMock.stuffArray);
controller = $controller(MyController, {
$scope: scope,
service: serviceMock
});
}));
it('should set myVar to the resolved promise value',
function() {
httpBackend.flush();
scope.$root.$digest();
expect(scope.myVar[0].FirstName).toEqual("Robby");
});
});
इसके अलावा, अगर मैं इकाई परीक्षण निम्न के नियंत्रक बदलने से गुजरता है:
var MyController = function($scope, service) {
service.getStuff().then(function(result) {
$scope.myVar = result;
});
}
है क्यों वादा कॉलबैक परिणाम मूल्य $ गुंजाइश के लिए प्रचारित नहीं किया जा रहा यूनिट परीक्षण में .myVar? पूर्ण कार्य कोड http://jsfiddle.net/s7PGg/5/
महान जवाब, मैं डॉक्स में है कि थोड़ा चूक लग रहा था। – robbymurphy
यदि आप मेरे जैसे बैक एंड का मज़ाक उड़ा रहे हैं, तो परिणाम वास्तविक प्रतिक्रिया सामग्री वाले "डेटा" संपत्ति के साथ एक समग्र होगा। – Gepsens
कोणीय 1.2 में, वादे अब स्वचालित रूप से हल नहीं किए जाते हैं (AKA, unwrapped)। – zhon