如何使用构建器模拟内部变量

来源:爱站网时间: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)来测试代码时,您的生产代码应该得到改进。

上一篇:js判断是否含有GBK以外的字符的函数

下一篇:在Kafka重新平衡中是否撤销操作等消耗过程完成?

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载