发出设置和清理代码
如果使用某些命令,可能需要额外的设置和清理。
例如,一个命令可以计算重定向,并在测试结束时打印数量。
在浏览器中运行时,可以使用回放事件,但使用运行器执行时,需要采取额外的步骤才能实现此目的。
在实现设置和清理代码发出之前,了解发出工作原理的一般概念是一个好主意 (链接)。
测试架构
在底层,运行器使用 jest 来执行测试。
测试通常如下所示
// config emission
describe("suite name", () => {
beforeAll(async () => {
// suite before all emission
});
beforeEach(async () => {
// suite before each emission
});
afterEach(async () => {
// suite after each emission
});
afterAll(async () => {
// suite after all emission
});
it("test name", async () => {
// test setup
driver.doStuff();
....
expect();
// test teardown
});
});
在上述每个注释处,都可以插入代码作为设置和清理的一部分。
配置发出
使用配置发出请求将代码发出到测试文件的顶部,用于设置全局变量或require
不同的模块。
{
action: "emit",
entity: "config",
project: {
name: "project name"
tests: []
}
}
action
-emit
,表示需要发出代码的操作。entity
-config
,要发出的实体,将 config 代码置于测试文件顶部。project
- 导出的项目数据。
sendResponse(`const myLibrary = require("my-library");`);
套件发出
sendResponse(`const myLibrary = require("my-library");`);
尝试始终使用套件发出,它使用内置的 jest 方法,beforeAll
、beforeEach
、afterAll
和 afterEach
。
{
action: "emit",
entity: "suite",
suite: {
name: "suite name"
tests: []
}
}
action
-emit
,表示需要发出代码的操作。entity
-suite
,要发出的实体,套件代码可以在每个测试之前和之后,或在所有测试之前和之后一次执行。suite
- 导出的套件数据。
响应
sendResponse({
beforeAll: "this will run once before all tests",
beforeEach: "this will run before every test",
afterEach: "this will run after every test",
afterAll: "this will run after all tests"
});
测试发出
不建议使用此方法,因为它会在测试用例 it
函数中发出代码。
如果可能,使用套件级别的 beforeEach
和 afterEach
,否则会影响测试指标(测试性能等)。
{
action: "emit",
entity: "test",
test: {
id: "unique test identifier",
name: "test name",
commands: [
command: "commandId",
target: "specified target",
value: "specified value"
]
}
}
action
-emit
,表示需要发出代码的操作。entity
-suite
,要发出的实体,套件代码可以在每个测试之前和之后,或在所有测试之前和之后一次执行。test
- 导出的测试数据、标识符、名称和命令列表。
响应
sendResponse({
setup: "this will run at the beginning of the test",
teardown: "this will run at the end of the test"
});