Использование библиотеки утверждений с тестовой средой GoDog - PullRequest
0 голосов
/ 13 апреля 2020

Я использую Cucumber GoDog в качестве BDD тестовой среды для микросервисного тестирования gRP C. GoDog не поставляется с какими-либо помощниками утверждений или утилитами.

Есть ли у кого-нибудь здесь опыт применения какой-либо из существующих библиотек утверждений, таких как Testify / GoMega с GoDog?

Насколько я знаю, GoDog делает не работает поверх go test, поэтому я предполагаю, что сложно принять любые библиотеки утверждений на основе go test, как я упоминал. Но я все же хотел бы проверить здесь, есть ли у кого-то такой опыт.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Вот базовое c подтверждение концепции с использованием Testify:

package bdd
import (
    "fmt"
    "github.com/cucumber/godog"
    "github.com/stretchr/testify/assert"
)
type scenario struct{}
func (_ *scenario) assert(a assertion, expected, actual interface{}, msgAndArgs ...interface{}) error {
    var t asserter
    a(&t, expected, actual, msgAndArgs...)
    return t.err
}
func (sc *scenario) forcedFailure() error {
    return sc.assert(assert.Equal, 1, 2)
}
type assertion func(t assert.TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool
type asserter struct {
    err error
}
func (a *asserter) Errorf(format string, args ...interface{}) {
    a.err = fmt.Errorf(format, args...)
}
func FeatureContext(s *godog.Suite) {
    var sc scenario
    s.Step("^forced failure$", sc.forcedFailure)
}
Feature: forced failure
  Scenario: fail
    Then forced failure

Ключом здесь является реализация интерфейса assert.TestingT Testify.

0 голосов
/ 14 апреля 2020

извините за то, что вы все еще работаете над этим.

Как мы уже говорили ранее, - это способ заставить его работать через ссылку , которую я отправил вы раньше, это просто не обязательно для начинающих, как вы упоминали в Slack. Возможно, это то, что мы, участники, можем рассмотреть в будущем, просто это не то, что настраивается в настоящее время, и, поскольку мы в основном добровольцы, настройка сроков для новых функций может быть сложной.

Моя рекомендация на время Существо будет делать утверждения через операторы if. Если вы не хотите, чтобы они были включены в ваш тестовый код, вы можете быстро создать функцию-обертку и вызывать их таким образом.

...