我在JUnit测试用例中有这个NonStrictExpectation:
new NonStrictExpectations(mCurrencyDao) {
{
invoke(mCurrencyDao, "readSqlQuery", withAny(String.class));
result = prepareTestSQL(pAllKeysForTest);
times = 1;
}
};
mCurrencyDao.loadAll(lToday);
工作得非常好,并导致预期的结果。 现在我已将代码更改为:
new NonStrictExpectations(mCurrencyDao) {
{
invoke(mCurrencyDao, "readSqlQuery", withAny(String.class));
result = prepareTestSQL(pAllKeysForTest);
times = 1;
}
};
mCurrencyDao.loadAll(lToday);
mCurrencyDao.loadAll(lTomorrow);
第二个电话mCurrencyDao.loadAll(lTomorrow);
必须在没有NonStrictExpectations
的情况下执行。
在我致电NonStrictExpectations
后,是否有一种简单的方法可以删除之前定义的mCurrencyDao.loadAll(lToday);
?
答案 0 :(得分:1)
您可以使用mockit.Invocation
类来调用Deencapsulation.invoke()
模拟的原始方法。以下代码片段在第二个方法调用时委托给原始方法。
new NonStrictExpectations(mCurrencyDao) {
{
invoke(mCurrencyDao, "readSqlQuery", withAny(String.class));
result = new Delegate<String>() {
@SuppressWarnings("unused")
String delegate(Invocation invocation) {
if (invocation.getInvocationIndex() == 0) {
return prepareTestSQL(pAllKeysForTest);
} else {
return invocation.proceed();
}
}
};
times = 2;
}
};
mCurrencyDao.loadAll(lToday);
mCurrencyDao.loadAll(lTomorrow);