Я пишу код, который выполняет расчеты даты и времени с текущим временем. Во время Joda это достигается через конструктор (Java), поскольку он является неизменным объектом. Мне нужно уметь издеваться над тем, чтобы возвращал определенный постоянный момент, чтобы я мог делать разумные утверждения теста, но оставлять все остальные методы DateTime.В Grails, есть ли хороший способ высмеять текущее время, используя время Joda?
Это доказывает неприятность. Grails mockFor(DateTime, true)
не позволит мне высмеять Java-конструктор, но нет очевидного или читаемого неструктурированного способа получить время в Joda.
Доступные опции, похоже, включают в себя низкоуровневые JVM-методы, такие как JMockit или класс EasyMock 3 класса, которые являются болью от Grails. Есть ли простой/простой способ достичь этого?
Отличный ответ. Я как-то надеялся избежать архитектуры системы по-разному, чтобы сделать этот тест возможным, но я многому научился о том, насколько болезненно это может быть издевка над конструкторами. –
Спасибо. Я стараюсь избегать прямого вызова конструктора - он нарушает «код для интерфейса», созданный экземпляр не может быть экстернализирован, как в тестах, а иногда приводит к «Construction Blobs». Таким образом, это сводилось к форме инъекции зависимости. –