ฉันมีคำสั่ง AngularJS ที่มีการtemplateUrl
กำหนด ฉันกำลังพยายามทดสอบหน่วยกับจัสมิน
JavaScript ของจัสมินของฉันมีลักษณะดังต่อไปนี้ตามคำแนะนำของสิ่งนี้ :
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'
ทั้งหมดที่ฉันต้องการสำหรับ templateUrl ที่จะโหลดเป็น - respond
ฉันไม่ต้องการที่จะใช้ ผมเชื่อว่านี่อาจจะเกี่ยวข้องกับมันโดยใช้ngMockแทนngMockE2E ถ้าเป็นผู้ร้ายฉันจะใช้ตัวหลังแทนตัวก่อนได้อย่างไร?
ขอบคุณล่วงหน้า!
expectGet
กำลังตรวจสอบว่ามีการพยายามร้องขอหรือไม่
$httpBackend
ล้อเลียนใช้ URL ที่ให้ไว้ในคำสั่งด้านล่างtemplateUrl
และไปรับมัน ฉันคิดว่าpassThrough
จะทำแบบนี้ คุณรู้วิธีอื่นในการทำเช่นนี้หรือไม่?
.passThrough();
วิธีนั้น แต่จากเอกสารคุณได้ลองทำอะไรบ้างเช่น$httpBackend.expectGET('path/to/template.html'); // do action here $httpBackend.flush();
ฉันคิดว่าสิ่งนี้เหมาะกับการใช้งานของคุณดีกว่า - คุณไม่ต้องการที่จะจับคำขอกล่าวคือwhenGet()
แต่ให้ตรวจสอบว่ามีการส่งแล้วแทน ส่ง?