2013-11-03 7 views
5

के साथ कोणीय जेएस/कर्म इकाई परीक्षण पासथ्रू() का उपयोग करके मैं अपने यूनिट परीक्षण के लिए वास्तविक $ http डेटा का उपयोग करना चाहता हूं। अगर मैं हटाने लागू इसे कहते समय समाप्तवास्तविक एक्सएचआर डेटा/पासथ्रू()

Unexpected request: GET /api/data 
No more request expected 
Error: Unexpected request: GET /api/data 
No more request expected 

:

यहाँ मैं अब तक है:

var should = chai.should(); 
beforeEach(module('myApp', 'ngMockE2E')); 
beforeEach(inject(function(_$httpBackend_, _$rootScope_, _$http_) { 
    $scope = _$rootScope_; 
    $http = _$http_; 
    $httpBackend = _$httpBackend_; 
})); 

it.only('blah', function(done) { 
$httpBackend.whenGET('/api/data').passThrough(); 

    $scope.$apply(function() { 
    $http.get('/api/data').success(function(data) { 
    data.should.eql({"foo": "bar"}); 
    done(); 
    }); 
}); 

// Evidently not required with E2E 
//$httpBackend.flush(); 

}); 

लेकिन यह एक त्रुटि देता है।

उत्तर

2

अधिकतर संभावना है कि आप बंदरगाह की तुलना में एक अलग बंदरगाह पर कर्म चला रहे हों, जहां वास्तविक डेटा वाली सेवाएं उपलब्ध हैं। यदि आप अपने अनुरोध सर्वर/पोर्ट पर फिर से रूट कर सकते हैं जहां वास्तविक डेटा वाली सेवाएं चल रही हैं, जैसे कि CORS का सामना नहीं किया जाता है, तो आप इसे काम करने में सक्षम होंगे। passThrough() का उपयोग करते समय, मेरे प्रोजेक्ट में, मैं Charles proxymap urls पर CORS प्राप्त करने के लिए उपयोग करता हूं। आप चीजों को कम करने के लिए अपनी वास्तविक डेटा सेवाओं को भी संगत कर सकते हैं।

+0

धन्यवाद, आदमी। आम तौर पर, मैं स्वीकार करने से पहले (या मेरे मामले में, बक्षीस देने) से पहले परीक्षण करने का इंतजार करूंगा, लेकिन आपका जवाब ऐसा लगता है कि यह बिल्कुल सही है। मुझे विश्वास नहीं है कि मैंने इसके बारे में सोचा नहीं था। इसके अलावा, मैंने चार्ल्स प्रॉक्सी के बारे में नहीं सुना है (हालांकि नाम परिचित लगता है)। – forivall

संबंधित मुद्दे