हम कर्मियों को हमारी कोणीय सेवाओं का परीक्षण करने के लिए कर्म का उपयोग करते हैं, इन सेवाओं में $ http कॉल हैं, इसलिए हमारे पास $ httpbackend मॉक किया गया है ताकि हम बिना सर्वर और डीबी के ऐप चला सकें। यह ठीक काम करता है, एक सेवा $ http ("someurl? Id = 1234") कॉल कर सकती है और हमें सही डेटा वापस मिल जाता है।कोणीय 1.1.5 परीक्षण वादा-आधारित सेवा
getAllowedTypes: function (contentId) {
var deferred = $q.defer();
$http.get(getChildContentTypesUrl(contentId))
.success(function (data, status, headers, config) {
deferred.resolve(data);
}).
error(function (data, status, headers, config) {
deferred.reject('Failed to retreive data for content id ' + contentId);
});
return deferred.promise;
}
:
लेकिन जब हम इकाई परीक्षण में एक ही बात करने की कोशिश है, हम इसे काम करने के लिए नहीं मिल सकता है, वादा कभी नहीं का समाधान करता है, जब यह $ http
सेवा शामिल है
मज़ाक उड़ाया $ httpbackend
$httpBackend
.whenGET(mocksUtills.urlRegex('/someurl'))
.respond(returnAllowedChildren); //returns a json object and httpstatus:200
परीक्षण
it('should return a allowed content type collection given a document id', function(){
var collection;
contentTypeResource.getAllowedTypes(1234).then(function(result){
collection = result;
});
$rootScope.$digest();
expect(collection.length).toBe(3);
});
लेकिन संग्रह अपरिभाषित है, तो फिर() कभी नहीं कहा जाता है।
काफी सब कुछ करने की कोशिश की को हल करने, $ rootScope वादा प्राप्त करने के लिए। $ (लागू), $ पचाने, $ httpBacke.flush(), लेकिन कुछ भी
तो मज़ाक उड़ाया काम करता है $ httpBackend जब में नियंत्रकों से कहा जाता है काम करता है ऐप, लेकिन जब सेवाओं को सीधे कर्म इकाई परीक्षणों में नहीं कहा जाता है
किज़ डी कुटर ने नीचे एक और जवाब में टिप्पणी की कि $ रूटस्कोप की आवश्यकता नहीं है। मैंने plunkr फोर्क किया और सभी $ rootScope उपयोगों पर टिप्पणी की। परीक्षण अभी भी गुजरता है: http://plnkr.co/edit/4ladJi7TAQ4sFdzuGmDr?p=preview – chashi