我想测试我的AngularJS警报服务(使用Mocha和Chai):
describe('service', function() {
var alertService;
var $rootScope;
beforeEach(module('components.services'));
beforeEach(inject(function(_alertService_, _$rootScope_) {
alertService = _alertService_;
$rootScope = _$rootScope_;
}));
describe('alertService', function() {
it('should start with zero alerts', function() {
$rootScope.should.have.property('alerts').with.length(0);
});
it('should add an alert of type danger', function() {
alertService.add('danger', 'Test Alert!');
$rootScope.should.have.property('alerts').with.length(1);
});
it('should add an alert of type warning', function() {
alertService.add('warning', 'Test Alert!');
$rootScope.should.have.property('alerts').with.length(2);
});
it('should close via the alert', function() {
var alert = $rootScope.alerts[0];
alert.should.have.property('close');
alert.close();
$rootScope.should.have.property('alerts').with.length(1);
});
});
});
但是,beforeEach方法在每次测试之前重置rootScope(我有点期望它在每个“describe”之前运行,而不是每个“it”),所以计算警报的数量是行不通的。
最好的方法是什么?在一个大的“它”中有多个断言?我对一般的单元测试和Javascript都很陌生,所以任何解释都是非常受欢迎的。
答案 0 :(得分:0)
它正在重置rootScope,因为你已将它声明为变量并且实际上没有注入到方法中...尝试传入$ rootScope并删除它的var声明。