如何使用构建器模拟内部变量
来源:爱站网时间:2021-09-09编辑:网友分享
我正在编写单元测试并遇到构建器的问题:这是要测试的类:公共类ToBeTest(){public void enact(SomeInput input){Session s = Session.builder()....
问题描述
我正在编写单元测试并遇到构建器的问题:这是要测试的类:
public class ToBeTest() {
public void enact(SomeInput input){
Session s = Session.builder().attributeA(input.getA()).build();
s.attributeB("someValue");
}
}
如何编写测试以验证Session S是否设置了字段A和B?谢谢!
思路:
基本上你可以验证两件事:
input.getA()
:模拟你提供给你的代码的SomeInput
实例,然后你可以在以后验证该模拟对象!Session.builder()
很可能是一个静态调用,因此使用静态模拟来提供一个模拟的构建器对象,您也可以在以后验证它。请参阅官方documentation了解执行此操作所需的步骤。
话虽如此:你真正的问题是你写的“难以测试代码”。惊喜,这使得很难测试。你看,首先有一个“方法本地”Sessions变量有什么意义。如果该方法将返回s
,则可以检查它是否具有某些属性。或者如果s
是该类的字段,那么您可以进行其他检查,以确保构建正确配置的Session。
简而言之:PowerMock(ito)提供了此代码所需的功能。阅读一些很好的教程,你不应该有太多问题。但是,还值得投资改进测试中的代码,以便更容易测试。我的经验法则是:当您需要PowerMock(ito)来测试代码时,您的生产代码应该得到改进。