Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
203 views
in Technique[技术] by (71.8m points)

javascript - Can I have multiple jest tests asserting on a single result?

I wanted to write many small tests that assert on a single result that's only calculated once, so I wrote this structure:

(note the outer beforeAll and beforeEach, and the inner beforeAlls)

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"})
      })
    })

  })
})

Unfortunately the inner beforeAll gets run before the outer beforeEach, so nothing actually works, because the connection hasn't been reset when the inner beforeAll runs.

Is there a way to use Jest to write these tiny tests I want? Where result is only calculated once for a group of tests, so I can write tests that are phrased exactly how my organization thinks about our business-rules?

Because with small tests like that the test-report ends up with nice names like "service #getDetails with two related users should have a count of 2" which speaks exactly to my org's domain knowledge.

question from:https://stackoverflow.com/questions/65891301/can-i-have-multiple-jest-tests-asserting-on-a-single-result

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...