Не уверен, почему следующее пользовательское утверждение не работает, похоже, ошибка компиляции, но синтаксис, который я использую, кажется, соответствует тому, что объясняется на их вики-странице: https://github.com/smartystreets/goconvey/wiki/Custom-Assertions
Я хочу сказать, что time.Time
в структуре представляет дату за последние 24 часа.
// func shouldBeInTheLast24Hours(targetDate time.Time, foo time.Time) string {
func shouldBeInTheLast24Hours(targetDate time.Time) string {
if targetDate.Before(time.Now().Add(time.Duration(-24) * time.Hour)) {
return ""
} else {
return "The target date is assumed to be in the last 24 hours, go *THERE* and fix stuff"
}
}
type DateStuff struct {
VipDate time.Time
}
func TestDateStuff(t *testing.T) {
Convey("Given date stuff", t, func() {
Convey("should verify some custom assertions are working", func() {
myDateStruct := &DateStuff{VipDate: time.Now()}
// So(myDateStruct.VipDate, shouldBeInTheLast24Hours, nil) // this throws "cannot use shouldBeInTheLast24Hours (type func(time.Time, time.Time) string) as type convey.assertion in argument to convey.So"
So(myDateStruct.VipDate, shouldBeInTheLast24Hours) // this throws "cannot use shouldBeInTheLast24Hours (type func(time.Time) string) as type convey.assertion in argument to convey.So"
})
})
}
При проверке версии Go Convey, которую я использую, я вижу это:
$ cd $GOPATH/src/github.com/smartystreets/goconvey/ && git log -n 1 | grep Date
Date: Fri Aug 25 16:14:26 2017 -0600
Который после даты на вики-странице (15 ноября 2013 г.), поэтому не нужно обновлять библиотеку Go Convey в моем $GOPATH
.
Я не очень хорошо знаком с этим синтаксисом замыкания, но мне не кажется, что я его неправильно использую, однако я вижу эту ошибку компиляции, поэтому я должен пропустить некоторые ошибки.