gpt4 book ai didi

javascript - 如何在 jasmine 中抽象和重用 describe() block ?

转载 作者:行者123 更新时间:2023-11-30 16:21:58 26 4
gpt4 key购买 nike

我开发的应用程序可以处理特定类型文档的 CRUD。因此,我们希望经常测试该文档是否符合一组值。我有一个带有 it() 的 describe() block ,它正在测试该文档的每个字段。

我想让它可重用,但简单地围绕 describe block 包装一个函数会导致计时问题,并且以下测试在该包装函数中的测试之前运行得太早。

有没有一种模式可以做到这一点?它应该是一个 promise 吗?我应该把它变成匹配器吗? docToBeEqualTo() ?我还没有看到 it() 在匹配器中使用,它似乎不是正确的地方

我想我在这里缺少一个常见的模式。你能帮忙吗?

非常感谢

编辑:请求的代码示例:

function compareDocs(targetData, timeout){
describe('the doc should contain : ', function(){
it('The amount field should be : "' + targetData.amount + '". ', function(){
expect(element(by.css(selector)).getAttribute('value')).toEqual(targetData.amount);
}, timeout);


it('The foo bar number should be : "' + targetData.fooBar + '". ', function(){
expect(element(by.css(selector)).getAttribute('value')).toEqual(targetData.fooBarNumber);

}, timeout);

return browser.waitForAngular();
});
});

这样使用:

describe('first describe', function(){
it('compare docs', function(){
compareDocs(currentData,targetData);
}, timeout);
});
describe('second describe where the doc is deleted', function(){
it('should remove payment from list', function(){
deleteDoc();//this runs too early, and delete the doc before compareDocs() has finished
expect(element(by.css(selector)).isPresent).toBe(false);
}, timeout);
});

TL;DR:如何防止 deleteDoc()compareDoc() 完成之前运行?

最佳答案

Jasmine 总是检查 describe block 和嵌套的 describe 函数。但是,当您在仅在被调用时执行的函数中定义套件(describe)或规范(it)时, Protractor 无法识别套件或规范规定的功能。您可以使用循环或自执行函数来执行套件和规范(我想这不会解决您的问题)。唯一可能的解决方案是调用一个函数,该函数的代码块中没有任何套件或规范。这是一个例子-

function compareDocs(targetData, timeout){
console.log('The amount field should be : "' + targetData.amount + '". ');
expect(element(by.css(selector)).getAttribute('value')).toEqual(targetData.amount);
console.log('The foo bar number should be : "' + targetData.fooBar + '". ');
expect(element(by.css(selector)).getAttribute('value')).toEqual(targetData.fooBarNumber);
return browser.waitForAngular();
};

注意:嵌套在 it 规范中的 describe 套件将不会执行。

希望对您有所帮助。

关于javascript - 如何在 jasmine 中抽象和重用 describe() block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34610201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com