我目前正在使用Karma作为JS跑步者在Jasmine中编写测试。在下面的“描述”中可以有多个“它”:
describe('PhoneCat controllers', function() {
describe('PhoneListCtrl', function(){
it('should create "phones" model with 3 phones', function() {
var scope = {},
ctrl = new PhoneListCtrl(scope);
expect(scope.phones.length).toBe(2);
it('should create "greetings" models with 3 greeting', funciton(){
var scope = {},
ctrl = new PhoneListCtrl(scope);
expect(scope.greetings.length).toBe(3);
});
});
});
});
它目前失败了,但你如何编写一个没有多余的测试(在这种情况下,必须描述同一个控制器,两次)?
答案 0 :(得分:3)
使用beforeEach
功能创建常用设置。它可以在任何级别添加。
describe('PhoneCat controllers', function() {
describe('PhoneListCtrl', function(){
beforeEach(function() {
this.scope = {};
this.ctrl = new PhoneListCtrl(scope);
});
it('should create "phones" model with 3 phones', function() {
expect(this.scope.phones.length).toBe(2);
});
it('should create "greetings" models with 3 greeting', funciton(){
expect(this.scope.greetings.length).toBe(3);
});
});
});
答案 1 :(得分:0)
我知道这个问题很古老,但是OP说这个测试失败了。
无论是否需要ForEach(),都可能是因为:
expect(scope.phones.length).toBe(2);
应该是:
expect(scope.phones.length).toBe(**3**);