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

时间:2015-10-05 10:58:34

标签: angularjs unit-testing jasmine karma-runner

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

2 个答案:

答案 0 :(得分: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();
});

答案 1 :(得分:0)

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