Ошибка `Код, который вы тестируете, должен сделать еще 1 вызов (ы)` в пакете testify

Я использую пакет testify для модульного тестирования в Голанге. Мой код содержит насмешки. во время выполнения теста его иногда пропускают и выдают ошибку The code you are testing needs to make 1 more call(s) иногда я не могу понять причину, почему это происходит, введите описание изображения здесь

Я прошел этот https://github.com/stretchr/testify/issues/31 но понял, в чем проблема и как ее можно решить?

3 ответа

В моем случае это была глупая ошибка -

Это может произойти, когда вы без необходимости имитируете вызов метода и фактически не вызываете имитируемый метод во время выполнения жизненного цикла тестирования.

Попробуйте удалить ненужные макеты методов, которые вы, возможно, написали, это может решить вашу проблему!

Я прочитал о планировании работы с программами и узнал, что если вы пишете тест для функций go (goroutines), то иногда они могут вызываться (в случае, когда тест пройден и), а иногда они могут не вызываться. случай, когда тест не пройден). Чтобы восстановиться после этого, следует использовать Gosched() в тестовом файле, где мы вызываем программу. Это происходит потому, что go использует совместное планирование для планирования для подпрограмм, которое отличается от упреждающего и не упреждающего. Если кто-то хочет больше об этом, следуйте этому. https://github.com/golang/go/issues/11462

Если вы использовали код, сгенерированный издевательством, для создания фиктивного объекта. У вас будет методNewYouInterfaceв директории генерировать. Когда вы используете этот метод для создания вашего объекта, вы должны использовать все, что выmockObj.On("method",..).Reutrn(), потому что после завершения тестового прогона "func t.Cleanup(func() { mock.AssertExpectations(t) }). Но вы можете создать без кода подписчикаnew(repoMock.RepoEntity), это вам поможет)

Другие вопросы по тегам