gpt4 book ai didi

jasmine - 我可以在回调中动态创建测试规范吗?

转载 作者:行者123 更新时间:2023-12-02 17:13:19 26 4
gpt4 key购买 nike

我想检索页面上的元素列表,并为每个元素创建一个测试规范。我的(伪)代码是:-

fetchElements().then(element_list) {
foreach element {
it("should have some property", function() {
expect("foo")
})
}
}

当我运行此命令时,我得到“未找到规范”,我认为这是有道理的,因为它们是在主路径之外定义的。

实现动态创建规范的最佳方法是什么?

最佳答案

有一些重大问题阻碍了它的轻松实现:

  • 您正在创建的规范基于异步代码的结果 - 基于 Protractor 应首先找到的元素
  • 您只能在 it 中包含 Protractor/WebDriverJS 特定代码、beforeEachbeforeAllafterEachafterAll 使其正常工作并将 promise 放在控制流等上。
  • 您不能嵌套 it block - jasmine 不会执行它们:Cannot perform a 'it' inside another 'it'

如果它不是您想要生成测试用例的元素,而是具有已定义值的静态变量,那么它会很简单:

describe("Check something", function () {
var arr = [
{name: "Status Reason", inclusion: true},
{name: "Status Reason", inclusion: false}
];

arr.map(function(item) {
it("should look good with item " + item, function () {
// test smth
});
});
});

但是,如果 arr 是一个 promise ,则测试一开始就会失败,因为 describe 内的代码(不在 it 内) code>) 将在 jasmine 加载测试时执行。

总而言之,有一个 it() block 并在其中工作:

it("should have elements with a desired property", function() {
fetchElements().then(element_list) {
foreach element {
expect("foo")
})
}
}

如果您担心区分各个元素的测试失败,您可以提供可读的错误消息,这样,如果测试失败,您可以轻松说出哪个元素未通过测试(您的伪测试用例中没有特定的属性)。例如,您可以提供 custom messages to expect() :

expect(1).toEqual(2, 'because of stuff') 

关于jasmine - 我可以在回调中动态创建测试规范吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35010879/

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