0

假设一个函数Builder返回一个这样的结构:

type MyStruct struct{
      List  []OtherStruct

 }

我想Builder使用ginkgo. 我创建了一个具有以下结构的测试套件:

Describe("Builder Test", func() {
    var (
       testInstance Mystruct
       err error
    )

    BeforeEach(func(){
        testInstance, err = Builder()
    })

    It("Should not fail", func(){
       Expect(err).NotTo(HaveOccurred())
    })

    It("Should have a valid List", func(){
       Expect(testInstance.List).To(HaveLen(1))
    })

    It("Should pass some tests", func(){
       Expect(testInstance.List).To(SomeCheck())
    })

    It("Should pass other tests", func(){
       Expect(testInstance.List).To(OtherCheck())
    })

    It("Should pass yet nother tests", func(){
       Expect(testInstance.List).To(YetSomeCheck())
    })

})

但是,如果由于某种原因Builder未能testInstance正确初始化并且该List字段未初始化,则所有It测试都会失败,Panic原因是索引超出范围。由于我预计测试数量会增加,因此我想防止这种情况发生。我添加了“它”(“应该有一个有效的列表”)assertion, but this doesnt prevent the other它被执行并失败。

我想知道是否有一种惯用的方法可以在执行使用它的子句testInstance.List之前添加一个检查是否有效。It

4

1 回答 1

0

根据银杏的文档

在 BeforeEach 和 AfterEach 块中放置断言也很常见。例如,这些断言可以断言在为规范准备状态时没有发生错误。

于 2020-05-04T20:12:56.890 回答