我遇到需要对EJB方法进行单元测试的情况。目标EJB依赖于另一个EJB,如
@Stateless(name = "service1")
@Interceptors({FaultBarrierInterceptor.class})
public class Service1 implements Service1Remote {
@EJB(beanName = "service2")
private Service2Local service2;
}
Service2Local是本地EJB接口,有一个我在Junit的@Before方法中模拟的方法,
new MockUp<Service2Local>(){
@Mock
public void $init() {
}
@Mock
public List<String> search(){
return List_1;
}
}.getMockInstance();
是否可以在不同的测试方法(例如List_2)中获得不同的列表(来自模拟的search()方法)?我希望这个search()方法在不同的@Test方法中返回不同的值。
我在我的测试方法中尝试了一个新的MockUp但是没有用。 在Mockito中,我可以通过在依赖模拟对象的test方法中调用when()。thenReturn()来实现这一点。
我正在使用@Injectable来注入依赖项。
答案 0 :(得分:1)
是的,我可以想到两种可能的方式。
public void setUpMocksForService2(final List<String>
stringList) {
new MockUp<Service2Local>(){
@Mock
public void $init() {
}
@Mock
public List<String> search(){
return stringList;
}
}.getMockInstance();
public void setUpMocksForService2(final List<String>
stringList) {
new MockUp<Service2Local>(){
@Mock
public void $init() {
}
@Mock
public List<String> search(){
return stringList;
}
}.getMockInstance();
并从您的不同测试方法中调用此方法。这里的缺点是每次都会创建一个新的模拟。
偏离主题注意:您还可以使用期望模仿mockito
的时间和行为