gpt4 book ai didi

javascript - 处理多个相似的期望

转载 作者:行者123 更新时间:2023-11-29 19:10:10 24 4
gpt4 key购买 nike

在其中一个应用程序页面上,我们有一个带有一组不同按钮的按钮栏,这些按钮根据屏幕上的不同操作更改它们的“启用状态”

因此,相应的 UI 测试具有非常相似的期望检查,例如:

it("action 1", function () {
// some actions

expect(pageObject.batch.applyButton.isEnabled()).toEqual(true);
expect(pageObject.batch.resetButton.isEnabled()).toEqual(true);
expect(pageObject.batch.refreshQueueButton.isEnabled()).toEqual(true);
expect(pageObject.batch.dismissButton.isEnabled()).toEqual(true);
});

it("action 2", function () {
// some actions

expect(pageObject.batch.applyButton.isEnabled()).toEqual(false);
expect(pageObject.batch.resetButton.isEnabled()).toEqual(true);
expect(pageObject.batch.refreshQueueButton.isEnabled()).toEqual(false);
expect(pageObject.batch.dismissButton.isEnabled()).toEqual(true);
});

it("action 3", function () {
// some actions

expect(pageObject.batch.applyButton.isEnabled()).toEqual(false);
expect(pageObject.batch.resetButton.isEnabled()).toEqual(false);
expect(pageObject.batch.refreshQueueButton.isEnabled()).toEqual(true);
expect(pageObject.batch.dismissButton.isEnabled()).toEqual(true);
});

这绝对不好看并且违反了DRY principle .

您将如何重构它并以更具可读性的方式应用多个期望检查?


我想有一个页面对象函数负责报告按钮的状态,该按钮将返回一个 promise ,解析为 bool 数组,这些 bool 值实际上将在测试中断言:

expect(pageObject.batch.getButtonState()).toEqual([true, true, false, false]);

它“提取方法”并有助于缩短测试时间,但它使调试更加困难,减少了断言错误信息。例如。 [true, false, true, false] 不等于 [true, true, false, false] 意义不大,需要单独调查,这可能很耗时。

最佳答案

custom_matcher

Often a project will want to encapsulate custom matching code for use across multiple specs. Here is how to create a Jasmine-compatible custom matcher.

// Custom matchers
var matchers = {
toBeEnabled: { ..

// Register matchers
jasmine.addMatchers(matchers)

it(..
expect([ .. ]).toBeEnabled() // pass if ALL enabled
expect([ .. ]).not.toBeEnabled() // pass if ALL disabled

关于javascript - 处理多个相似的期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39579926/

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