我有以下junit class
@RunWith(SpringJUnit4ClassRunner.class)
@Configuration
@ContextConfiguration(locations = { "classpath:junit-xxx.xml", "classpath:junit-xxxxx.xml" })
public class TestFictionalClass
{
@Autowired // I changed this to @Mock so the first "when" below works
private MyService mService
@Before
@Transactional
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
Mockito.when((mService).myMockedMethod(Mockito.any(String.class)))
.thenReturn("Hello");
Mockito.when((mService).myOtherRealMethod(Mockito.any(BigDecimal.class), Mockito.any(BigDecimal.class))).thenCallRealMethod();
}
我在这里要做的是模拟一种方法之一,因此它总是返回值" hello",但我希望同类中的其他方法正常执行。我在第二种方法上遇到以下错误
org.mockito.exceptions.base.mockitoexception:无法调用摘要 Java对象上的真实方法!只有在 模拟非抽象方法。
我如何模拟相关的班级,所以我覆盖了一个方法之一返回的值?
谢谢
ps:我正在使用Mockito和Spring MVC
而不是@mock使用@spy注释。间谍提供了仅模拟特定方法(使用"何时")并让其他人按原样工作的方式。
更多关于间谍的信息:链接。