当我想将requestHooks(例如)添加到测试和固定装置中时,我基本上不知道在哪里做。
答案 0 :(得分:3)
我找到了解决方案。但是,它并不稳定:有时会引发错误:'[object DOMException]:\ n没有可用的堆栈跟踪'。也许有人知道为什么? 代码(在testCafe文档中创建了模拟和记录器对象之后):
When('I log in as free user', async () => {
await testController.addRequestHooks(mock)
await testController.addRequestHooks(logger)
await testController.wait(2000)
await testController
.click(selector)
.typeText(selector,string, {replace : true})
.typeText(selector,string, {replace: true})
.click(selector);
});
更新:现在它可以与wait()函数一起使用,但是也许对此有一些更优雅的答案?
答案 1 :(得分:2)
strstr
在strchr
,NULL
,testController
步骤中可用。
因此,您可以使用测试控制器标准方法:addRequestHooks和removeRequestHooks。
我已经从https://github.com/rquellh/testcafe-cucumber存储库修改了该示例,以演示Given
的用法。
When
答案 2 :(得分:0)
我的解决方案(gherkin-testcafe:^ 2.2.0):
定义:
Feature: Check server names
Scenario Outline: Fetch pages
Given there is the <url>
When I check the response status
Then the http <prameter> equals the <value>
Examples:
| url | prameter | value |
| https://www.seznam.cz | server | nginx |
| https://www.google.com | server | gws |
执行:
const {Given, When, Then} = require('cucumber');
const {RequestLogger} = require('testcafe');
let logger;
Given(/there is the (.+)/, async (t, [url]) => {
logger = RequestLogger(url, {
logResponseHeaders: true,
});
await t.addRequestHooks(logger);
await t.navigateTo(url);
});
When(/I check the response status/, async t => {
await t.expect(logger.contains(record => record.response.statusCode === 200)).ok();
});
Then(/the http (.+) equals the (.+)/, async (t, [name, value]) => {
await t.expect(logger.contains(record => record.response.headers.server === value)).ok();
});