如何使用Mockito测试此方法?

时间:2017-08-18 14:38:31

标签: java testing mocking mockito

我有一个方法,在不同的对象之间进行复杂的交互,我想使用Mockito框架进行测试。我会很感激一些指导方针。我知道代码并不重要。

两个document.getElementsByClassName('ads').style.display=none; 方法都是静态的。我想模拟obj3并使if语句在测试中返回true。

getInstance()

1 个答案:

答案 0 :(得分:0)

实际上,调用obj3变量值的方法不是直接可测试的。

根本原因是getInstance()这是一种静态方法。

实际上,FactoryOne.getInstance()应该是被测试类的依赖项,返回的对象应该是一个接口

通过这种方式,您可以定义一个设置依赖关系的构造函数:

public MyClass(FooInterface foo){
   this.foo = foo;
}

并替换:

ObjectThree obj3 = FactoryOne.getInstance().getList().getObject(obj2.getId());

by:

ObjectThree obj3 = foo.getList().getObject(obj2.getId());

在应用程序代码中,您可以调用构造函数:

MyClass c = new MyClass(FactoryOne.getInstance().getList());

在测试代码中,您可以为Foo接口创建一个模拟器,通过构造函数将其设置为测试下的类:

Foo fooMock = Mockito.mock(Foo.class);
MyClass myClassUnderTest = new MyClass(fooMock);

然后记录getList()的模拟行为,以便在测试中将具有所需调用值的模拟对象返回到getObject()