javascript - 开 Jest 测试将变量传递给另一个测试

标签 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)
})

我知道 jest 有一个 --runInBand 选项,但是在“删除用户”中这仍然有用户作为 undefined。任何想法如何用 Jest 来完成这个?谢谢

最佳答案

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

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

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

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

关于javascript - 开 Jest 测试将变量传递给另一个测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54489350/

相关文章:

javascript - 如何在大型React项目中找到死代码?

reactjs - Jest 测试在 tsx 语法上失败

reactjs - 类型 'value' 上不存在 TypeScript 属性 'HTMLElement'。 react Jest 测试

javascript - 尽管使用了 act,什么可能会导致 "update to ... inside a test was not wrapped in act"?

reactjs - 为什么 Jest 中的 TestUtils.Simulate.click 直接在 React Components 上使用时不起作用?

javascript - 如何使用 enzyme 选择特定行?

javascript - 在 Dynamics CRM Online 中获取 HTML Web 资源的值(value)

javascript - 缓冲区未在网络音频 api javascript 中加载

javascript - 在react/redux状态下改变大型数据结构

javascript - 更新父页面上的 Div,最好使用 jQuery