javascript - 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
解决方案
每个测试都是独立运行的,并且有充分的理由。测试应该确认孤立的条件、方法和逻辑。--runInBand
所做的只是连续运行测试,但它们仍然不一定能够以您期望的方式共享数据对象。
此外,假设这些方法遵循某种后端服务,您将无法轻松地完全测试该系统的行为。听起来您想要一个端到端或集成测试框架,而不是像 Jest 这样的单元测试框架。
与 Jest 保持一致,您可能需要模拟调用的任何后端服务createUser
和deleteUser
. Jest模拟可以帮助用创建您想要测试的条件类型的新函数替换外部函数。
或者或另外,您可以使用beforeAll或beforeEachuser
来存根您的对象,创建示例数据,允许您测试它在传递特定对象时的行为(可能通过上述模拟绕过任何后端持久性)。deleteUser
推荐阅读
- ios - 在 Swift 中尝试将单元格分配给 UICollectionView 中的某些部分时,如何遍历数组?
- javascript - 如何使用 JavaScript 禁用 Evernote 网页视图“最大宽度”?
- html - 在我的本地机器上创建一个网页。链接转到 file:/// 而不是 http://
- javascript - 无法重定向到另一个 HTML 页面
- node.js - 会话结束后从用户浏览器中删除 cookie。我使用 Passport-twitter 对用户进行身份验证。
- ios - 与委托传递数据但仍然为零,为什么?
- html - 如何提升一组卡片css中的单张卡片
- composer-php - PhpOffice/PhpSpreadsheet “类 PhpOffice\PhpSpreadsheet\IOFactory 无法加载”
- angular6 - Apollo-boost 缓存问题
- node.js - 在 kubernetes 上以主机作为 localhost 公开节点 js 应用程序