使用 Karma 进行单元测试不调用函数

Unit-Testing with Karma not calling functions

我正在尝试使用 Karma 执行单元测试。我已经根据文档完成了所有操作。当我编写后面的这部分测试时,它从不调用最后两个函数。

it('should create the mock object', function (done) {

    service.createObj(mockObj)
        .then(test)
        .catch(failTest)
        .finally(done);
});
var test = function() {
    expect(2).toEqual(1);
};

var failTest = function(error) {
    expect(2).toEqual(1);
};

尝试注入你的 beforeEach 函数 rootScope。例如像这样:

var rootScope;

beforeEach(inject(function (_$rootScope_) {
    rootScope = _$rootScope_.$new();
    //other injections
}));

然后在您的服务方法之后调用 $digest():

it('should create the mock object', function (done) {
    service.createObj(mockObj)
        .then(test)
        .catch(failTest)
        .finally(done);

    rootScope.$digest();
});
  • 安装 angular-mocks 模块。
  • 在beforeEach中用模块注入模块。
  • 在 beforeEach 中使用注入函数注入您的服务。
  • 使用 $httpBackend 模拟您的服务器。
  • 做,不要忘记,让它同步。用 $http.flush().