我正在尝试使用虚拟服务来获取Angular中的数据,我正在使用ngMockE2E,而我的Mock代码如下所示:
(function () {
"use strict"
var app = angular
.module("productResourceMock", ["ngMockE2E"]);
app.run(function ($httpBackend) {
var products = [
{
"productId": 1,
"productName": "mobile1",
"productCode": "heh4",
"releaseDate": "May 21, 2013",
"description": "very nice mobile",
"cost": 200,
"price": 300,
"category": "Electronics",
"tags": ["mobile", "electronic"],
"imageUrl": "images/img1.jpg"
},
{
"productId": 2,
"productName": "mobile2",
"productCode": "heh4",
"releaseDate": "May 21, 2012",
"description": "not a nice mobile",
"cost": 100,
"price": 500,
"category": "Electronics",
"tags": ["mobile", "Electronic"],
"imageUrl": "images/img2.jpg"
}];
var productUrl = "/api/products";
$httpBackend.whenGet(productUrl).respond(products);
}); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Karma和Jasmine对我的AngularJS应用程序进行单元测试.我想模仿$ http服务.为此,我使用$ httpBackend方法.以下是我要测试的服务:
angular.module('MyModule').factory('MyService', function($http, $log, $parse, $q, $timeout, $filter, MyOtherService1, MyOtherService2){
var service = {};
service.getSomething = function(id){
return $http.get('/somePath/subpath/' + id);
}
});
Run Code Online (Sandbox Code Playgroud)
我对此服务的单元测试是:
describe("myTest", function(){
var myService, $httpBackend, scope, mockMyOtherService1, mockMyOtherService2;
var myResponse =
{
foo:'bar'
};
beforeEach(module("MyModule"));
beforeEach(inject(function(_MyService_, $injector){
$httpBackend = $injector.get('$httpBackend');
myService = _MyService_;
scope = $injector.get('$rootScope').$new();
mockMyOtherService1 = $injector.get('MyOtherService1');
mockMyOtherService2 = $injector.get('MyOtherService2');
}));
beforeEach(function(){
//To bypass dependent requests
$httpBackend.whenGET(/\.html$/).respond(200,'');
});
//If I uncomment the below afterEach block, the same error is shown …Run Code Online (Sandbox Code Playgroud) unit-testing angularjs httpbackend karma-jasmine angularjs-ngmock
我正在尝试组合一些组件的测试.我有以下内容
describe(`selecting an item`, () => {
let element, $scope;
beforeEach(module('my-app'))
beforeEach(inject(($compile, $rootScope) => {
$scope = $rootScope;
element = $compile(`
<item-selector parent-id="pid">
</item-selector>
`)($scope)
//call $ctrl.activate() on the component's controller
}))
})
Run Code Online (Sandbox Code Playgroud)
控制器item-selector有一个activate()方法.我如何从测试中调用它?$scope似乎没有任何参考.