在andReturn中使用expect的方法参数
Use the method parameters of expect in the andReturn
Collection<T_SI_IDABAREME> tSiIdabaremes;
DAO_F_IDA_DESC mockDaoFIdaDesc
prepareExpects(){
expect(mockDaoTSiIdabareme.findByDate(isA(Date.class)))
.andReturn(searchByParameter(tSiIdabaremes, date));
}
是否可以使用将传递给 andReturn 中的 findByDate 的 date?
PS:这是一个服务测试class,我正在以绕过数据库的方式进行。
每当你像这样使用 expect 方法时
Easymock.expect(someMethod(Date.Class)).andReturn(something);
你指示编译器模拟所有调用该方法的方法,只要 任何 日期 class 的对象作为参数传递,你将无法使用它return 表达式中的对象。
另一方面,如果你有这样的事情,
Easymock.expect(someMethod(someSpecificDateObject)).andReturn(someSpecificDateObject);
您正在指示编译器模拟此方法调用 仅当 class 的特定对象作为参数传递时 (在本例中为 someSpecificDateObject
) 并且您将能够在 returning 时使用此参数,因为您知道该方法仅在传递此对象时才会被模拟。
如果对您有利,您可以使用第二个选项,但是第一个选项不能满足您的要求。
希望对您有所帮助!
祝你好运!
而不是:
expect(mockDaoTSiIdabareme.findByDate(isA(Date.class)))
.andReturn(searchByParameter(tSiIdabaremes, date));
我应该放
expect(mockDaoTSiIdabareme.findByDate(isA(Date.class)))
.andAnswer(new IAnswer<Collection<T_SI_IDABAREME>>() {
public Collection<T_SI_IDABAREME> answer() throws Throwable {
return searchByParameter((Date)getCurrentArguments()[0]);
}
}
);
它只会在执行方法时查找 return 值,然后我们可以使用 getCurrentArguments() 检索传递给该方法的参数。
您可以在 EasyMock Documentation 中找到更多相关信息。
Collection<T_SI_IDABAREME> tSiIdabaremes;
DAO_F_IDA_DESC mockDaoFIdaDesc
prepareExpects(){
expect(mockDaoTSiIdabareme.findByDate(isA(Date.class)))
.andReturn(searchByParameter(tSiIdabaremes, date));
}
是否可以使用将传递给 andReturn 中的 findByDate 的 date?
PS:这是一个服务测试class,我正在以绕过数据库的方式进行。
每当你像这样使用 expect 方法时
Easymock.expect(someMethod(Date.Class)).andReturn(something);
你指示编译器模拟所有调用该方法的方法,只要 任何 日期 class 的对象作为参数传递,你将无法使用它return 表达式中的对象。
另一方面,如果你有这样的事情,
Easymock.expect(someMethod(someSpecificDateObject)).andReturn(someSpecificDateObject);
您正在指示编译器模拟此方法调用 仅当 class 的特定对象作为参数传递时 (在本例中为 someSpecificDateObject
) 并且您将能够在 returning 时使用此参数,因为您知道该方法仅在传递此对象时才会被模拟。
如果对您有利,您可以使用第二个选项,但是第一个选项不能满足您的要求。
希望对您有所帮助!
祝你好运!
而不是:
expect(mockDaoTSiIdabareme.findByDate(isA(Date.class)))
.andReturn(searchByParameter(tSiIdabaremes, date));
我应该放
expect(mockDaoTSiIdabareme.findByDate(isA(Date.class)))
.andAnswer(new IAnswer<Collection<T_SI_IDABAREME>>() {
public Collection<T_SI_IDABAREME> answer() throws Throwable {
return searchByParameter((Date)getCurrentArguments()[0]);
}
}
);
它只会在执行方法时查找 return 值,然后我们可以使用 getCurrentArguments() 检索传递给该方法的参数。
您可以在 EasyMock Documentation 中找到更多相关信息。