gpt4 book ai didi

unit-testing - 模拟引发模拟域类的异常

转载 作者:行者123 更新时间:2023-12-02 15:38:11 25 4
gpt4 key购买 nike

我正在为Grails服务类编写unit tests。服务类使用多个域类。使用mockDomain方法为域类创建模拟程序就像一种魅力。即使测试域对象是否可以正确保存(域验证)的代码路径也可以轻松编写。但是,在我的代码中,我还用处理异常情况的try/catch块包装了域对象操作。有没有一种方法可以模拟域操作引发异常?这可以通过Mock框架轻松完成,例如Mockito(thenThrow)或EasyMock(andThrow),但我主要是在寻找Grails原生的方法。我愿意接受补充Grails测试框架的框架。

最佳答案

使用Groovy的元类化很简单。对于此示例,我将说您的域类之一是Foo。

void testFooThrowsException(){
def fooInstance = new Foo()
fooInstance.metaClass.methodToTest = {arg1, arg2->
throw new CustomException("I'm an exception")
}

shouldFail CustomException, {fooInstance.methodToTest("val1", "val2")}
}

修改实例的元类后,该实例将在其整个生命周期内具有修改的行为。 Read more on metaclassing on the Groovy site.这是IMO Groovy最酷的部分之一。

关于unit-testing - 模拟引发模拟域类的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6741326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com