मेरे पास एक AngularJS निर्देश है जिसमें एक templateUrl
परिभाषित है। मैं जैस्मीन के साथ इसका परीक्षण करने की कोशिश कर रहा हूं।
मेरी जैस्मीन जावास्क्रिप्ट इस की सिफारिश के अनुसार, निम्नलिखित की तरह दिखता है :
describe('module: my.module', function () {
beforeEach(module('my.module'));
describe('my-directive directive', function () {
var scope, $compile;
beforeEach(inject(function (_$rootScope_, _$compile_, $injector) {
scope = _$rootScope_;
$compile = _$compile_;
$httpBackend = $injector.get('$httpBackend');
$httpBackend.whenGET('path/to/template.html').passThrough();
}));
describe('test', function () {
var element;
beforeEach(function () {
element = $compile(
'<my-directive></my-directive>')(scope);
angular.element(document.body).append(element);
});
afterEach(function () {
element.remove();
});
it('test', function () {
expect(element.html()).toBe('asdf');
});
});
});
});
जब मैं अपनी जैस्मीन की विशेष त्रुटि में इसे चलाता हूं तो मुझे निम्नलिखित त्रुटि मिलती है:
TypeError: Object #<Object> has no method 'passThrough'
सभी मैं चाहता हूँ कि टेम्पलेट के लिए लोड किया जाना है जैसा कि है - मैं उपयोग नहीं करना चाहता respond
। मेरा मानना है कि यह यह करने के लिए संबंधित हो सकता है का उपयोग कर ngMock के बजाय ngMockE2E । यदि यह अपराधी है, तो मैं पूर्व के बजाय बाद का उपयोग कैसे करूं?
अग्रिम में धन्यवाद!
expectGet
बस जाँच कर रहा है कि क्या अनुरोध का प्रयास किया गया था।
$httpBackend
मॉक को वास्तव में निर्देशन में दिए गए URL का उपयोग करने templateUrl
और इसे प्राप्त करने का तरीका बताने की आवश्यकता है। मैंने सोचा था passThrough
कि ऐसा करेंगे। क्या आप ऐसा करने का एक अलग तरीका जानते हैं?
.passThrough();
उस तरह से उपयोग नहीं किया है, लेकिन डॉक्स से, क्या आपने कुछ ऐसा करने की कोशिश की है:$httpBackend.expectGET('path/to/template.html'); // do action here $httpBackend.flush();
मुझे लगता है कि यह आपके उपयोग को बेहतर बनाता है - आप अनुरोध को पकड़ना नहीं चाहते हैं, अर्थातwhenGet()
, लेकिन इसके बजाय यह भेजे जाने की जांच करें, और फिर वास्तव में भेज दे?