gpt4 book ai didi

javascript - intern.js 重构到 block 行为不一致之前

转载 作者:行者123 更新时间:2023-11-28 21:28:50 24 4
gpt4 key购买 nike

我正在使用带有 Chai 和 BDD 的 intern.js 库来测试我的 javascript 应用程序。我有以下代码:

// Login as admin
bdd.before(function() {
indexPage = new IndexPage(this.remote, adminUsername, adminPass);
});

bdd.it('should turn a user to an input box', function () {
return indexPage.login(baseUrl)
.clearLocalStorage()
.get(baseUrl + '#/details')
.findAllByCssSelector('.user-filter')
.findByName('user')
.clearValue()
.click().pressKeys(['Functional Test', '\uE015', '\uE006'])
.end()
.findByXpath('//td[@class="grid-column-user"]/span')
.click()
.end()
.findByXpath('//td[@class="grid-column-user"]/input')
.then(function (elem) {
assert.lengthOf(elem, 1, "Yay");
})
.end();
});

bdd.it('should get the error state class when incorrect input is added', function () {
return indexPage.login(baseUrl)
.clearLocalStorage()
.get(baseUrl + '#/details')
.findAllByCssSelector('.user-filter')
.findByName('user')
.clearValue()
.click().pressKeys(['Functional Tes', '\uE015', '\uE006'])
.end()
.findByXpath('//td[@class="grid-column-user"]/span')
.click()
.pressKeys(['adsf', '\uE006'])
.end()
.findByXpath('//td[@class="grid-column-user"]/input[@class="user-error"]')
.then(function (elem) {
assert.lengthOf(elem, 1, "User should be input");
})
.end();
});

所以我想推断出很多在测试之间重复的逻辑。似乎以下代码可能在 before block 中:

bdd.before(function() {
indexPage = new IndexPage(this.remote, adminUsername, adminPass);
testUser = indexPage.login(baseUrl)
.clearLocalStorage()
.get(baseUrl + '#/details')
.findAllByCssSelector('.user-filter')
.findByName('user')
.clearValue()
.click().pressKeys(['Functional Test', '\uE015', '\uE006'])
});

bdd.it('should get the error state class when incorrect input is added', function () {
return testUser.end()
.findByXpath('//td[@class="grid-column-user"]/span')
.click()
.pressKeys(['adsf', '\uE006'])
.end()
.findByXpath('//td[@class="grid-column-user"]/input[@class="user-error"]')
.then(function (elem) {
assert.lengthOf(elem, 1, "User should be input");
})
.end();
});

当我将此代码放入 before block 并将其存储为变量时,代码的行为不会像在一个长链调用中而不是在 before block 中那样运行。我不确定我在这里做错了什么,因为我已经对我推断出的内容进行了多次不同的迭代。

谢谢!

最佳答案

在您的原始代码中,您通过登录到新 session 并清除本地存储来重置每个测试的页面状态。在您的新代码中,您只在套件的开头执行一次,因此套件中的所有测试都将在测试页面上的同一 session 中运行。

要复制原始测试的行为,请使用 beforeEach 而不是 before

关于javascript - intern.js 重构到 block 行为不一致之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31016157/

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