如何检查在被测方法中创建的对象的值?

How to check the values of object created in method under test?

我正在测试服务层的一种方法,该方法创建一个新对象并使用该对象调用另一个服务。

在将某些值设置到创建的对象中的方法中涉及一些处理。

如何验证对象中设置的值是否正确?

public class A{
    void method aMethod(){
        //some json parsing... a = someValue;
        Xobject xobject = new Xobject();
        xobject.setValue(a);

        someOtherService.someVoidMethod(xobject);
    }
}

想要检查 xobject 的值。

如果您使用 Mockito 为 someOtherService 设置模拟,那么您可以使用 Mockito ArgumentCaptor 来捕获 xobject,并且在您的测试中您可以访问该变量并对其断言。

https://static.javadoc.io/org.mockito/mockito-core/2.6.9/org/mockito/ArgumentCaptor.html

作为 Jocke 提供的解决方案的替代方案,您可以执行以下操作:创建一个辅助函数来为您创建 xobject

public class A {
    Xobject makeXobjectFromJson(){
        //some json parsing... a = someValue;
        Xobject xobject = new Xobject();
        xobject.setValue(a);
        return xobject;
    }
    void method aMethod(){
        Xobject xobject = makeXobjectFromJson();
        someOtherService.someVoidMethod(xobject);
    }
}

测试辅助函数允许您使用 unit-testing 测试代码的算法部分,甚至可能不需要模拟任何东西。然后可以在集成测试中测试与 someOtherService 的交互。