【发布时间】:2020-06-27 15:09:29
【问题描述】:
我想在测试前使用 Mockito 设置模拟数据。但是,自动连线发生在@Before 之前,所以我的预期数据存在的测试丢失了。有办法解决吗?
@RunWith(SpringRunner.class)
@ContextConfiguration(
classes = {
Foo.class
}
)
public class FooTest {
@MockBean
final Programs programs;
@Autowired
final Foo foo;
@Before
public void setPrograms() {
when(programs.findAll())
.thenReturn(
List.of(
"A", "B", "C"
)
);
}
@Test
public void foo() {
assertThat(foo.getBlah()).isNotEmpty();
}
}
interface Programs {
List<String> findAll();
}
class Foo {
// I have more complicated structures than a list, for example only.
private List<String> blah;
@Autowired
private Programs programs;
public List<String> getBlah() { return blah; }
@PostConstruct
public void init() {
blah = programs.findAll();
}
}
【问题讨论】:
-
您能否提供一个示例来说明您正在做什么并试图实现的目标?因为 Mockito 提供了像
when或given这样的方法来指定测试中应该返回哪些方法(或属性的 getter)