Ошибка `Код, который вы тестируете, должен сделать еще 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)
, это вам поможет)