调用外部 URL 在 Testcafe 中设置和拆卸
Call external URL to setup and teardown in Testcafe
我正在将 Testcafe 与具有数据库驱动后端(没有 API,但 MVC)的应用程序一起使用。
我想在 运行 测试之前在数据库中设置和拆卸设置。这可以通过在我的应用程序上调用 URL 来解决(例如 https://myapp.local/setup?foo=bar or https://myapp.local/teardown?foo=bar)
我想在 运行 测试之前从 Testcafe 中调用这些 URLS。我看过模块 testcafe-once-hook
(https://github.com/DevExpress/testcafe-once-hook) and the accompanying examples (https://github.com/AlexKamaev/testcafe-once-hook-example)
import { oncePerFixture } from 'testcafe-once-hook';
const setupDb = oncePerFixture(async t => {
await t.navigateTo('https://myapp.local/setup?foo=bar');
});
fixture `Setup db`
.before(() => {
setupDb;
})
test('Test1', async t => {
/* Test 1 Code */
});
但是从我的 Apache 日志文件中可以看出,setupDb 中的 URL 从未被调用。
我也查看了 https://github.com/DevExpress/testcafe/issues/1345#issuecomment-338796731,但这里也从未调用过 URL,正如我从我的 Apache 日志文件中看到的那样。
fixture `Setup db`
.before(async ctx => {
ctx.hasSetup = false;
// Server-side actions
})
.beforeEach( async t => {
if (!t.fixtureCtx.hasSetup) {
await t.navigateTo('https://myapp.local/setup?foo=bar');
t.fixtureCtx.hasSetup = true;
}
else {
return t;
}
})
如何实现预先调用 https://myapp.local/setup?foo=bar?
我检查了您的代码并发现了一些可能导致不正确行为的错误。
我修改了你的代码,请检查:
import { oncePerFixture } from 'testcafe-once-hook';
const setupDb = oncePerFixture(async t => {
await t.navigateTo('https://myapp.local/setup?foo=bar');
});
fixture `Setup db`
.beforeEach(setupDb);
或
fixture `Setup db`
.beforeEach(async t => {
await setupDb(t);
});
目前我运行
testcafe@6.14.11
和
testcafe-once-hook@0.0.4
这解决了我的问题。
我正在将 Testcafe 与具有数据库驱动后端(没有 API,但 MVC)的应用程序一起使用。
我想在 运行 测试之前在数据库中设置和拆卸设置。这可以通过在我的应用程序上调用 URL 来解决(例如 https://myapp.local/setup?foo=bar or https://myapp.local/teardown?foo=bar)
我想在 运行 测试之前从 Testcafe 中调用这些 URLS。我看过模块 testcafe-once-hook
(https://github.com/DevExpress/testcafe-once-hook) and the accompanying examples (https://github.com/AlexKamaev/testcafe-once-hook-example)
import { oncePerFixture } from 'testcafe-once-hook';
const setupDb = oncePerFixture(async t => {
await t.navigateTo('https://myapp.local/setup?foo=bar');
});
fixture `Setup db`
.before(() => {
setupDb;
})
test('Test1', async t => {
/* Test 1 Code */
});
但是从我的 Apache 日志文件中可以看出,setupDb 中的 URL 从未被调用。
我也查看了 https://github.com/DevExpress/testcafe/issues/1345#issuecomment-338796731,但这里也从未调用过 URL,正如我从我的 Apache 日志文件中看到的那样。
fixture `Setup db`
.before(async ctx => {
ctx.hasSetup = false;
// Server-side actions
})
.beforeEach( async t => {
if (!t.fixtureCtx.hasSetup) {
await t.navigateTo('https://myapp.local/setup?foo=bar');
t.fixtureCtx.hasSetup = true;
}
else {
return t;
}
})
如何实现预先调用 https://myapp.local/setup?foo=bar?
我检查了您的代码并发现了一些可能导致不正确行为的错误。 我修改了你的代码,请检查:
import { oncePerFixture } from 'testcafe-once-hook';
const setupDb = oncePerFixture(async t => {
await t.navigateTo('https://myapp.local/setup?foo=bar');
});
fixture `Setup db`
.beforeEach(setupDb);
或
fixture `Setup db`
.beforeEach(async t => {
await setupDb(t);
});
目前我运行
testcafe@6.14.11
和
testcafe-once-hook@0.0.4
这解决了我的问题。