小编Ric*_*d V的帖子

对使用$ http的控制器进行单元测试

我有一个简单的控制器,我需要它做的第一件事是为范围分配一个值.

function TestCtrl($scope, $http) {
    $scope.listForms = 'some list';
}
Run Code Online (Sandbox Code Playgroud)

控制器的以下测试按预期工作:

describe('Testing a controller', function() {

    var ctrl, scope, httpMock;

    beforeEach(inject(function($injector) {
        scope = $injector.get('$rootScope').$new();
        ctrl = $injector.get('$controller');
        ctrl(TestCtrl, { $scope: scope });
    }));

    it("assigns to scope", function() {
      expect(scope.listForms).toMatch("some list");
    });
});
Run Code Online (Sandbox Code Playgroud)

但是当我更改函数以从我的API获取列表时

function TestCtrl($scope, $http) {
  $http.get('/api/listForms').success(function(list) {
    $scope.aListOfForms = 'some list';
  });
}
Run Code Online (Sandbox Code Playgroud)

并且测试变为

describe('Testing a controller', function() {

    var ctrl, scope, httpMock;

    beforeEach(inject(function($injector) {
        httpMock = $injector.get('$httpBackend');

        scope = $injector.get('$rootScope').$new();
        httpMock.when('GET', '/tactical/api/listOrderForms').respond("an order form");

        ctrl = …
Run Code Online (Sandbox Code Playgroud)

unit-testing mocking jasmine angularjs

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

标签 统计

angularjs ×1

jasmine ×1

mocking ×1

unit-testing ×1