我有一个控制器方法,它在里面创建一个域实例并保存它。我需要模拟这个保存失败所以我想要嘲笑这个域,而对于save方法我抛出异常。有没有办法模仿捐赠者阶层。
def method(){
...
Donor donor = new Donor()
donor.properties = convertedParams
donor.save(failOnError: true)
...
}
我知道如何模拟控制器内部使用的服务
def mock = new groovy.mock.interceptor.MockFor(ExampleService)
def exampleService = controller.exampleService
mock.demand.exampleMethod(){ Long id, TransactionResponse tr ->
throw new RegistrationActivationException(new IllegalStateException('something went wrong'), [])
}
mock.use{
controller.exampleService = new ExampleService()
model = controller.exampleMethod()
}
因此,上面的代码将模拟控制器中使用的ExampleService服务。有没有办法做这样的模拟,但不是服务,但对于在上面的第一个代码块中的方法中实例化的域。我需要模拟Donor类,当调用save时,我需要抛出异常以模拟和测试当捐赠者保存失败时会发生什么。
我感谢任何帮助!谢谢!
答案 0 :(得分:1)
我需要模拟Donor类,当调用save时,我需要抛出一个异常,以模拟和测试当捐赠者保存失败时会发生什么。
这似乎是一种非常复杂的方法来实现在保存时抛出的异常。相反,您似乎可以尝试保存与Donor
不匹配的Donor
实例。假设new Donor().save(failOnError: true)
至少有一个非null的属性,这应该实现相同的东西
SELECT CONCAT(DATE_FORMAT(date,'%b'),' ',
(SELECT CONCAT('(',YEAR(date),'-',LPAD(MONTH(date),2,0),'-01 - ')
), (SELECT concat(last_day(date),')')
)) dates, SUM(quantity) qty FROM DATES GROUP BY MONTH(date) ORDER BY MONTH(date)