标签: angularjs-ngmock

$ httpBackend .whenGet不是Angular中的函数

我正在尝试使用虚拟服务来获取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)

angularjs angularjs-ngmock

8
推荐指数
1
解决办法
5040
查看次数

$ httpBackend.flush()方法抛出错误:[$ rootScope:infdig] 10 $ digest()迭代达到.中止

我正在尝试使用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

6
推荐指数
1
解决办法
739
查看次数

如何在测试时访问组件控制器?

我正在尝试组合一些组件的测试.我有以下内容

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似乎没有任何参考.

unit-testing angularjs angularjs-ngmock

1
推荐指数
1
解决办法
1432
查看次数