gpt4 book ai didi

javascript - RequestLogger 'contains' 方法预期行为

转载 作者:行者123 更新时间:2023-11-30 14:27:55 25 4
gpt4 key购买 nike

使用 TestCafe 框架开发端到端测试套件。

我正在尝试对请求 URL 参数实现断言,并根据前端用例触发/不触发请求。

被测组件的种类是一个带有很多过滤器的表格过滤器面板。

所以我一个一个地测试每个过滤器,并根据每个过滤器类型对请求参数格式进行断言。

最后,我想检查在清除过滤器时是否没有使用任何过滤器参数触发请求。

根据我的理解,如果我在执行最后一个断言之前没有调用记录器的“清除”方法,那么这应该不会通过。但测试实际上是绿色的。

在我看来,我没有正确理解记录器的行为。包含断言机制?它总是只检查最新的请求吗?或者它是否检查任何已记录的请求?

这是我的测试代码:

test('Transactions Base Filters', async (t) => {
// amount filter
await t.typeText(filters.grossAmountMin, '10')
.expect(filters.activeFilter.count).eql(1)
.expect(logger.contains(r => (
r.response.statusCode === 200
&& r.request.url.indexOf('grossAmount=10__value') > 0
))).ok()
.typeText(filters.grossAmountMax, '5')
.expect(filters.grossAmountMin.getReact(({ props: { error } }) => error)).ok()
.expect(filters.grossAmountMax.getReact(({ props: { error } }) => error)).ok()
// check invalid input does not fire a request
.expect(logger.count(r => r.request.url.indexOf('grossAmount=10__value__5') > 0)).eql(0)
.typeText(filters.grossAmountMax, '00')
.expect(filters.grossAmountMin.getReact(({ props: { error } }) => error)).notOk()
.expect(filters.grossAmountMax.getReact(({ props: { error } }) => error)).notOk()
.expect(logger.contains(r => (
r.response.statusCode === 200
&& r.request.url.indexOf('grossAmount=10__value__500') > 0
))).ok();

// orderId filter
await t.typeText(filters.orderId, '8E')
.expect(filters.activeFilter.count).eql(2)
.expect(logger.contains(r => (
r.response.statusCode === 200
&& r.request.url.indexOf('orderId=*8E*') > 0
))).ok()
.click(filters.orderId)
.pressKey('ctrl+a delete')
.expect(filters.activeFilter.count).eql(1);

// email filter
await t.typeText(filters.customerEmail, 'fvrecord')
.expect(filters.activeFilter.count).eql(2)
.expect(logger.contains(r => (
r.response.statusCode === 200
&& r.request.url.indexOf('customerEmail=*fvrecord*') > 0
))).ok()
.click(filters.customerEmail)
.pressKey('ctrl+a delete')
.expect(filters.activeFilter.count).eql(1);

// status filter
await t.click(filters.status)
.click(filters.statusMenuItem('VALIDATED'))
.expect(filters.activeFilter.count).eql(2)
.expect(filters.status.getReact(({ props: { value } }) => value.length)).eql(1)
.expect(logger.contains(r => (
r.response.statusCode === 200
&& r.request.url.indexOf('status=VALIDATED') > 0
))).ok()
.click(filters.status)
.click(filters.statusMenuItem('REFUSED'))
.expect(filters.status.getReact(({ props: { value } }) => value.length)).eql(2)
.expect(logger.contains(r => (
r.response.statusCode === 200
&& r.request.url.indexOf('status=VALIDATED|REFUSED') > 0
))).ok()
.click(filters.status)
.click(filters.statusMenuItem('VALIDATED'))
.expect(logger.contains(r => (
r.response.statusCode === 200
&& r.request.url.indexOf('status=VALIDATED') > 0
))).ok()
.click(filters.status)
.click(filters.statusMenuItem('REFUSED'))
.expect(filters.status.getReact(({ props: { value } }) => value.length)).eql(0)
.expect(filters.activeFilter.count).eql(1);

// transactionType filter
await t.click(filters.type)
.click(filters.statusMenuItem('DEBIT'))
.expect(filters.activeFilter.count).eql(2)
.expect(filters.type.getReact(({ props: { value } }) => value.length)).eql(1)
.expect(logger.contains(r => (
r.response.statusCode === 200
&& r.request.url.indexOf('type=DEBIT') > 0
))).ok();

// reset all
// logger.clear();
await t.click(filters.resetButton)
.expect(filters.activeFilter.count).eql(0)
.expect(logger.contains(r => (
r.response.statusCode === 200
&& r.request.url.indexOf('grossAmount=') < 0
&& r.request.url.indexOf('orderId=') < 0
&& r.request.url.indexOf('customerEmail=') < 0
&& r.request.url.indexOf('status=') < 0
&& r.request.url.indexOf('type=') < 0
))).ok();
});

最佳答案

您可以使用记录器和 Node.js 模块(urlquerystirng)检查此最终请求中是否没有过滤器参数。例如:

.expect(logger.contains (r => r.response.statusCode == 200 && checkParameters(r.request.url)))

function checkParameters(url) {
var parsedUrl = url.parse(url):
var parsedParameters = querystring.parse(url.path);

return parsedParameters.param1 === '' && parsedParamters.param2 == '' ...

关于javascript - RequestLogger 'contains' 方法预期行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51649333/

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