我正在尝试从一个测试中分配一个变量,以便在另一个测试中进行访问。例如:
let user;
test('create new user', async () => {
const response = await createUser()
user = response
})
test('delete user', async () => {
const response = await deleteUser(user.id)
})
据我所知,笑话具有--runInBand
选项,然而,这仍具有用户为undefined
在“删除用户”。有什么主意如何做到这一点吗?谢谢
答案 0 :(得分:2)
每个测试都是独立运行的,这有充分的理由。测试应确认隔离的条件,方法和逻辑。 \/\/
所做的所有工作都是顺序运行这些测试,但是它们仍然不一定能够按照您期望的方式共享数据对象。
此外,假设这些方法服从某种后端服务,您将无法轻松地完全测试该系统的行为。听起来好像您想要一个端到端或集成测试框架,而不是像Jest这样的 unit 测试框架。
与Jest保持联系,您可能需要模拟--runInBand
和createUser
中调用的任何后端服务。笑话mocks可以帮助您用新功能替换外部功能,这些功能会创建您要测试的条件类型。
或者,您也许可以使用beforeAll或beforeEach对deleteUser
对象进行存根,从而创建示例数据来测试user
的行为它传递了一个特定的对象(可能通过上述模拟绕过了后端的持久性)。