【发布时间】:2011-07-16 10:09:44
【问题描述】:
嗯,我现在正在测试遗留代码。而且,我在某个地方附近可以通过这个测试,但它卡在上面有 cmets 的线上。这是sn-p
new NonStrictExpectations(){
SASCustomerDataAssemblerBD assembleBd;
CustomerTOs tos;
CustomerSASTO to;
Another rowTo;
SelectionJobLogBD logBd;
{
SASCustomerDataAssemblerBD.getInstanceUsingEjbRef(); result = assembleBd;
assembleBd.getData(); result = tos;
..
..
//This line is not being invoked.
//Instead the actual line of code is working. Which is,
//Collections.max(someCollection, someComparator);
//Hence I am stuck because getting null in "to"
invoke(Collections.class, "max", new ArrayList(), new MaxDateComparator()); result = to;
to.getSasDataRow(); result = rowTo;
SelectionJobLogBD.getInstanceUsingEjbRef(); result = logBd;
..
}
};
new TaskSASCustomerReading().execute();
然而,result 的所有值都是模拟的。
【问题讨论】:
-
to是否在其他地方被实例化? -
@Feanor:它是一个模型实例。
-
澄清一下,“模型实例”是指在此 NonStrictExpectations 记录阶段有另一个调用,其中结果分配给
to? -
@Feanor:不不,我刚刚更新了代码以显示
to。
标签: java unit-testing junit mocking jmockit