gpt4 book ai didi

java - 如何初始化模拟对象?

转载 作者:行者123 更新时间:2023-11-30 09:27:05 24 4
gpt4 key购买 nike

假设我有以下代码:
模拟对象类

public class SomeClass {
private Foo someField;
public SomeClass {
someField = new Foo();
}
public Foo getSomeField { return someField; }
public void getSomething() {}
public boolean doSomething(Object object) {}
}

接下来我有测试套件

public class TestSuite {
private ClassToTest classToTest;
private SomeClass mock;

@Before
public void setUp() {
classToTest = new ClassToTest();
mock = EasyMock.createMock(SomeClass.class);
}

@Test
public void testMethod() throws Exception {
mock.getSomething();
EasyMock.replay(mock);

classToTest.methodToTest(mock); //Where methodToTest accepts SomeClass and int

EasyMock.verify(mock);
}
}

正在测试的方法

public void methodToTest(SomeClass a) {
//Logic here
Foo b = a.getSomeField();
b.do(); // <--- null pointer exception here because someField isn't initialized
a.getSomething(); // <--- thing I want to test if it is being called, but can't due to exception prior to this line
//Logic after
}

我被卡住了..所以是的,基本上 SomeClass 没有像我想要的那样被初始化。有什么解决方法吗?或者其他任何可以做类似事情的框架?

最佳答案

您的methodToTest 调用a.getSomeField(),但测试的设置部分不期望调用。你想要这样的东西:

Foo foo = new Foo();
EasyMock.expect(mock.getSomeField()).andReturn(foo);

或者打断电话:

Foo foo = new Foo();
EasyMock.expect(mock.getSomeField()).andStubReturn(foo);

(在调用 mock.getSomething() 之前)。

参见 this question andReturnandStubReturn 的区别

关于java - 如何初始化模拟对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14737240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com