Тестовый контроллер выглядит следующим образом
def justTest(){
def res = paymentService.justTest()
[status: res.status]
}
Метод обслуживания теста выглядит следующим образом
def justTest(){
}
Теперь два тестовых примера выглядят следующим образом.В обоих случаях был изменен метод обслуживания платежей justTest, чтобы он возвращал два разных значения.
@Test
void test1(){
PaymentService.metaClass.justTest = {['status': true]}
def res = controller.justTest()
assertEquals(res.status, true)
GroovySystem.metaClassRegistry.removeMetaClass(PaymentService.class)
}
Второй тест выглядит следующим образом
@Test
void test2(){
PaymentService.metaClass.justTest = {['status': false]}
def res = controller.justTest()
assertEquals(res.status, false)
GroovySystem.metaClassRegistry.removeMetaClass(PaymentService.class)
}
Один тест не пройден.Когда я использовал отладчик, я заметил, что эта замена не работает
PaymentService.metaClass.justTest = {['status': true]}
Так что мне интересно, почему одна мета замена работает, а другая не работает?Разве невозможно изменить один и тот же метод в двух разных тестовых примерах с использованием метапрограммирования?Я ценю любую помощь.Спасибо!