我上下查看并尝试了各种方法以使 E2E passThrough() 真正起作用。仅示例用于模板。我不认为它实际上可以工作,但如果有人看过一个有效的例子,我很乐意看到它。基本上,我希望在我的 Karma 测试中调用真正的 XHR,而不是模拟。
这就是我所在的位置 - 我尝试了很多变体 - 现在我得到一个 Unknown provider: cartServiceProvider 错误 - 有时我会注入它,但它是别的东西。
myAppDev = angular.module('myApp', ['ngMockE2E']);
myAppDev.run(function($httpBackend) {
$httpBackend.whenPOST(/^api\/cart\/save/).passThrough();
});
beforeEach(angular.module('myApp'));
beforeEach(inject(function(_$httpBackend_, _$rootScope_, _$http_e) {
$scope = _$rootScope_;
$http = _$http_;
$httpBackend = _$httpBackend_;
}));
describe('#createOrder()', function() {
it('should return an order ID', function(done) {
inject(function(cartService) {
$scope.$apply(function() {
cartService.createOrder(function(res) {
done();
});
});
})
});
});
样品服务:
angular.module('myApp').factory('cartService', function($http) {
Cart.prototype.createOrder = function(callback) {
var self = this;
var data = {}
$http.post('/api/cart/save', data ).success(function(res) {
self.order = res.id;
callback(res);
});
};