开玩笑的测试将变量传递给另一个测试

时间:2019-02-02 02:05:38

标签: javascript jestjs

我正在尝试从一个测试中分配一个变量,以便在另一个测试中进行访问。例如:

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在“删除用户”。有什么主意如何做到这一点吗?谢谢

1 个答案:

答案 0 :(得分:2)

每个测试都是独立运行的,这有充分的理由。测试应确认隔离的条件,方法和逻辑。 \/\/所做的所有工作都是顺序运行这些测试,但是它们仍然不一定能够按照您期望的方式共享数据对象。

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

与Jest保持联系,您可能需要模拟--runInBandcreateUser中调用的任何后端服务。笑话mocks可以帮助您用新功能替换外部功能,这些功能会创建您要测试的条件类型。

或者,您也许可以使用beforeAllbeforeEachdeleteUser对象进行存根,从而创建示例数据来测试user的行为它传递了一个特定的对象(可能通过上述模拟绕过了后端的持久性)。