我有一个方法,在不同的对象之间进行复杂的交互,我想使用Mockito框架进行测试。我会很感激一些指导方针。我知道代码并不重要。
两个document.getElementsByClassName('ads').style.display=none;
方法都是静态的。我想模拟obj3并使if语句在测试中返回true。
getInstance()
答案 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()
。