【发布时间】:2014-03-13 18:25:54
【问题描述】:
我正在编写量角器测试套件,并且需要测试使用从另一个套件生成的页面的东西。我只能想出一种编写测试的方法,但这似乎不是一个好的编写方法:
var someStuffToSave = [];
describe('description of first thing', function(){
it('should generate some things', function(){
someStuffToSave.push(generateSomeThings());
});
it('should generate some things', function(){
someStuffToSave.push(generateSomeThings());
});
it('should generate some things', function(){
someStuffToSave.push(generateSomeThings());
element(by.id("something")).getText().then(function(){
for(var i = 0; i < someStuffToSave.length; i++) (function(){
var idx = i;
describe('thing analysis' + idx, function(){
it('should be something', function(){
expect(someStuffToSave[idx]).toEqual(true);
});
});
})();
});
});
});
我更愿意做这样的事情,但问题是第二个描述的内部立即执行,而不是等待第一个描述完成。
var someStuffToSave = [];
describe('description of some thing', function(){
it('should generate some things', function(){
someStuffToSave.push(generateSomeThings());
});
it('should generate some things', function(){
someStuffToSave.push(generateSomeThings());
});
it('should generate some things', function(){
someStuffToSave.push(generateSomeThings);
});
});
describe('analyzing things', function(){
for(var i = 0; i < someStuffToSave.length; i++)function(){
var idx = i;
describe('thing ' + idx, function(){
it('should be something', function(){
expect(someStuffToSave[idx]).toEqual(true);
});
});
}
});
有没有办法在第一个描述中没有'then'的情况下写这个?
【问题讨论】:
-
我没有,但我尝试将它们都嵌套在描述中。今天晚些时候我会再玩这个。
-
你还在努力解决这个问题吗?我想如果我能更好地理解你想要做什么,我可能会提供帮助。你能提供一个更具体的例子吗?在上面的示例中,初始描述块具有三个规范(它......)但是它们都没有断言任何东西,而是它们似乎在做某事。通常,您在 before 块中执行操作,然后在 it 块中断言“之前”所做的事情产生了预期的输出或副作用。你的例子太抽象了,我无法理解你为什么不遵循这种模式。
-
实际测试有几千行,所以我试着把它缩短为一个例子。在实际程序中,在最初的it语句中,有大量的断言,同时它们正在收集有关站点的信息以供以后的测试进行测试。我最终做的是将第二个测试嵌套到一个在第一个测试结束时解决的 Promise 中。这不是很漂亮的 IMO,但它确实有效。
标签: javascript jasmine protractor jasmine-node