修改后我无法保存到对象。
我正在将对象的属性设置为新值,当我想要保存时,我会收到NullPointerException
。
/* La méthode à tester */
public Rem afterInitRem(Rem rem) {
/** Initialize regles with status MISSING **/
List<Regle> regles = rem.getRegles();
Regle regle = new Regle();
regle.setCode("REGLE1");
regle.setStatus(RegleStatus.MISSING);
regles.add(regle);
return remRepository.save(rem);
}
/*Le test*/
@Mock
private RemRepository remRepository;
@BeforeEach
void beforeEachTest() {
rem = new Rem();
}
@AfterEach
void reInitVar() {
beforeEachTest();
}
@Test
public void afterInitRemTest() {
target.afterInitrem(rem);
when(remRepository.save(any(Rem.class))).thenReturn(rem);
ArgumentCaptor<Rem> argument = ArgumentCaptor.forClass(Rem.class);
verify(regleRepository).save(argument.capture());
assertEquals("REGLE1", argument.getValue().getRegles().get(0).getCode());
assertEquals(RegleStatus.MISSING, argument.getValue().getRegles().get(0).getStatus());
assertEquals(1, argument.getValue().getRegles().size());
}
我做调试,我看到通过的属性集,问题是在return remRepository.save(rem);
的水平
在使用Junit5时,请确保在代码中使用其中任何一个来初始化模拟:
@ExtendWith(MockitoExtension.class) on the test class
要么
@BeforeEach
void beforeEachTest() {
MockitoAnnotations.initMocks(this);
rem = new Rem();
}
此外,您需要确保手动注入模拟或使用@InjectMocks
注释到SUT中。
最后,确保在调用实际的SUT方法之前完成所有模拟设置。
谢谢@Maciej Kowalski,我添加了@InjectMocks注释,现在是测试工作。