如何在测试前 运行 异步任务并存储结果以供进一步测试 - Supertest
How to run async task before tests and store the result for further tests - Supertest
我正在尝试为我的应用程序中的模块编写 API 测试。该应用程序有一个用户和与该用户对应的文章,并且有 GET、POST、DELETE 文章请求。
我正在为这些请求编写测试用例,方法是为每个 GET、POST 等创建一个 describe
块,每个块内都是我的测试。但问题是这些测试需要该用户的 key
才能知道它需要为哪个用户获取、创建和删除文章。目前,我对该密钥进行了硬编码,但我想为该文件中的所有测试创建一个新用户,并使用创建该用户时返回的密钥。然后在所有测试完成后删除用户。
基本上,它归结为 运行 在所有这些测试之前执行一个异步任务,并在所有测试中使用该任务的结果,并在所有测试完成后撤消该任务。我对后端 API 测试还很陌生,所以我不知道从哪里开始。感谢任何帮助。
经过几个小时的研究,我自己找到了答案。
创建一个 describe
块并使用其中的所有其他 describe
块。并使用钩子在测试前获取数据并在测试后清除它。使用 this
关键字存储数据。
describe('Testing articles module', function () {
before(async function () {
const res = await createUser(); // Do whatever you want before running tests
this.myKey = res.body.key; // Store data using 'this'
});
after(async function () {
await deleteUser(); // Undo the action done in 'before' hook if you want
});
describe('Testing GET request', function () {
it('should return status 200', function () {
// You can use this.myKey here
// and inside all the tests in other describe blocks as well
});
});
describe('Testing POST request');
describe('Testing DELETE request');
});
顾名思义,after
和 before
是钩子,您可以在所有测试之前和之后使用它来做一些事情。您可以在这里阅读更多内容:- Mocha hooks
此外,由于 this
关键字,在这种情况下不要使用箭头函数,因为箭头函数没有 this
。它会引起问题。 Read about it here
我正在尝试为我的应用程序中的模块编写 API 测试。该应用程序有一个用户和与该用户对应的文章,并且有 GET、POST、DELETE 文章请求。
我正在为这些请求编写测试用例,方法是为每个 GET、POST 等创建一个 describe
块,每个块内都是我的测试。但问题是这些测试需要该用户的 key
才能知道它需要为哪个用户获取、创建和删除文章。目前,我对该密钥进行了硬编码,但我想为该文件中的所有测试创建一个新用户,并使用创建该用户时返回的密钥。然后在所有测试完成后删除用户。
基本上,它归结为 运行 在所有这些测试之前执行一个异步任务,并在所有测试中使用该任务的结果,并在所有测试完成后撤消该任务。我对后端 API 测试还很陌生,所以我不知道从哪里开始。感谢任何帮助。
经过几个小时的研究,我自己找到了答案。
创建一个 describe
块并使用其中的所有其他 describe
块。并使用钩子在测试前获取数据并在测试后清除它。使用 this
关键字存储数据。
describe('Testing articles module', function () {
before(async function () {
const res = await createUser(); // Do whatever you want before running tests
this.myKey = res.body.key; // Store data using 'this'
});
after(async function () {
await deleteUser(); // Undo the action done in 'before' hook if you want
});
describe('Testing GET request', function () {
it('should return status 200', function () {
// You can use this.myKey here
// and inside all the tests in other describe blocks as well
});
});
describe('Testing POST request');
describe('Testing DELETE request');
});
顾名思义,after
和 before
是钩子,您可以在所有测试之前和之后使用它来做一些事情。您可以在这里阅读更多内容:- Mocha hooks
此外,由于 this
关键字,在这种情况下不要使用箭头函数,因为箭头函数没有 this
。它会引起问题。 Read about it here