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