我在开玩笑的时候遇到了一个问题。 我可以为每个测试文件模拟 1 个模块,但我无法为单个 Jest 测试模拟多个模块。 前任 但这会导致错误,因为其中 1 个模拟不起作用。 有没有办法模拟这两个模块,因为我在我的班级的快照测试中都需要它们。 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我想写很多小测试来断言一个只计算一次的result
,所以我写了这个结构:
(注意外部的beforeAll
和beforeEach
以及内部的beforeAll
)
describe("service", ()=>{
beforeAll(async ()=>{
await initDb()
})
beforeEach(async ()=>{
await resetConnection()
})
afterEach(async ()=>{
await cleanDb()
})
describe("#getDetails", ()=>{
describe("with a normal user", ()=>{
let result
beforeAll(async ()=>{
const user = await createDbUserEntity()
result = await service.getDetails(user)
})
it("should have a count of 1", ()=>{
expect(result.count).toEqual(1)
})
it("should not have a relationship", ()=>{
expect(result.rel).toNotBeDefined()
})
})
describe("with two related users", ()=>{
let result
beforeAll(async ()=>{
const user = await createDbUser({related: createDbUser()})
result = await service.getDetails(user)
})
it("should have a count of 2", ()=>{
expect(result.count).toEqual(1)
})
it("should have a relationship", ()=>{
expect(result.rel).toEqual({foo:"bar"})
})
})
})
})
不幸的是,内部beforeAll
在外部beforeEach
之前运行,所以实际上没有任何效果,因为当内部 beforeAll 运行时连接没有被重置。
有没有办法使用 Jest 来编写我想要的这些小测试? 对于一组测试, result
只计算一次,所以我可以编写测试,准确表达我的组织对我们业务规则的看法?
因为像这样的小测试,测试报告最终会得到很好的名字,比如“ service #getDetails with two related users should have count of 2 ”,这完全符合我组织的领域知识。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.