Я переписываю юнит-тест нашего контроллера k8s с gink go.
Как и в предыдущем TDD, для каждого теста у нас будет что-то вроде.
// Create the Channel object and expect the Reconcile
g.Expect(c.Create(context.TODO(), myObj)).NotTo(gomega.HaveOccurred())
defer c.Delete(context.TODO(),myObj)
Мы хотим создать объект для теста и удалить его из кластера подчеркивания после этого теста.
Теперь, на ginkgo
, мы запускаем тесты в пределах spec
контейнеров. Для меня container
- это процесс происхождения, если это так, значит ли это, что defer
, определенный в It
spe c, будет выполнен перед выходом из container
вместо выхода из It
spe c .
Например,
var _ = Describe("my desr", func(){
It("a", func(){
fmt.Println(100)
defer func(){fmt.Println("a", 100)}()
})
It("b", func(){
fmt.Println(200)
defer func(){fmt.Println("b", 200)}()
})
})
Будет ли результат:
a
100
a100
200
b200
или
b
100
200
b200
a100
В моем случае я определенно определился с первым поведением. Или я в неправильном направлении с точки зрения поведения defer
? Я имею в виду, я должен смотреть на BeforeEach
и AfterEach
подход?