首页 > 解决方案 > jest testing pass variable to another test

问题描述

I'm trying to assign a variable from one test to be accessed within another test. For example:

let user;

test('create new user', async () => {
  const response = await createUser()
  user = response
})

test('delete user', async () => {
  const response = await deleteUser(user.id)
})

I understand that jest has a --runInBand option, however this still has user as undefined in "delete user". Any ideas how to accomplish this with jest? Thank you

标签: javascriptjestjs

解决方案


每个测试都是独立运行的,并且有充分的理由。测试应该确认孤立的条件、方法和逻辑。--runInBand所做的只是连续运行测试,但它们仍然不一定能够以您期望的方式共享数据对象。

此外,假设这些方法遵循某种后端服务,您将无法轻松地完全测试该系统的行为。听起来您想要一个端到端集成测试框架,而不是像 Jest 这样的单元测试框架。

与 Jest 保持一致,您可能需要模拟调用的任何后端服务createUserdeleteUser. Jest模拟可以帮助用创建您想要测试的条件类型的新函数替换外部函数。

或者或另外,您可以使用beforeAllbeforeEachuser来存根您的对象,创建示例数据,允许您测试它在传递特定对象时的行为(可能通过上述模拟绕过任何后端持久性)。deleteUser


推荐阅读