это не подходит? https://t.me/gogolang/841583
да это я и сам навелосипедить могу, зачем мне лишняя зависимость на пустом месте?)
ну, у monkey есть подпись: Monkey sometimes fails to patch a function if inlining is enabled. Try running your tests with inlining disabled, for example: go test -gcflags=-l. The same command line argument can also be used for build. Monkey won't work on some security-oriented operating system that don't allow memory pages to be both write and execute at the same time. With the current approach there's not really a reliable fix for this. Monkey is not threadsafe. Or any kind of safe. так что на свой страх и риск, конечно, можно. Но правильно было бы использовать mock/stub
если есть возможность развернуть код, то лучше бы наверное время передавать сверху по возможности
я это время никак не пропихну в хук AfterFind горма)
подробнее, я может что-то не знаю https://gorm.io/docs/hooks.html#Querying-an-object
func (u *User) AfterFind(tx *gorm.DB) (err error) { if u.MemberShip == "" { u.MemberShip = "user" } return } —> func (u *User) AfterFind(tx *gorm.DB) (err error) { // call code!, например из DI контейнера (еще плюс к нему) // или переменная из какого-то пакета // или какой угодно код откуда угоднО! }
я не очень понимаю, какой именно слой вы тестируете, и зачем вам gorm.AfterFind 🙂
в AfterFind в теле хука написал time.Now() и не знает как быть :):):):) мне бы такие проблемы 🙂
я ничо не понял, что вы предлагаете
в AfterFind вы написали time.Now() так? дял обнволения поля?
именно так, только теперь у меня Now из глобальной переменной, которая подменяется в тестах ваши предложения нипанимаю!!111
вы может вынести код куда угодно и как угодно им манипулировать, го же
это ясно, я ваши предложения не понимаю
я там чуть выше написал, что у меня есть в модели вычисляемое поле, которое заполняется хуком AfterFind горма вычисляется оно на основе time.Now и вот теперь в интеграционных тестах мне надо подменить этот самый time.Now на заранее заданную дату, чтобы проверить логику этого вычисляемого поля, корректно ли оно заполняется или нет вот и спросил бестпрактикес на это)
Бестпрактис будет, как вы написали выше, timGetter.
можно ссылку на коммент?
Какой? Про monkey? 🥲
Обсуждают сегодня