使用 EasyMock 测试预期方法得到 IllegalStateException
Testing expected method with EasyMock gets IllegalStateException
我正在尝试测试服务 class 以查看它是否调用了存储库的正确方法。存储库只是从 CouchDbRepositorySupport
扩展而来
服务测试
@RunWith(EasyMockRunner.class)
@SpringApplicationConfiguration(App.class)
public class ServiceTest {
@Rule
public EasyMockRule mocks = new EasyMockRule(this);
@TestSubject
UserService userService = new UserServiceImpl();
@Mock
UserRepository userRepositoryMock;
@Test
public void testGetUser() {
User user = new User("Bob","bob87);
user.setId("bob87"); //username is the id
userService.getUser(user.getId());
EasyMock.expect(userRepositoryMock.get(user.getId())).andReturn(user); //the line where the error occurs
EasyMock.expectLastCall().times(1);
EasyMock.replay(userRepositoryMock);
EasyMock.verify(userRepositoryMock);
}
}
但是我得到一个 IllegalStateException
java.lang.IllegalStateException: missing behavior definition for the
preceding method call: CompanyRepository.get("Optis") Usage is:
expect(a.foo()).andXXX()
你需要告诉你的 mock 要做什么并调用 replay() 然后调用调用这个 mock 的服务:
public void testGetUser() {
User user = new User("Bob","bob87);
user.setId("bob87"); //username is the id
EasyMock.expect(userRepositoryMock.get(user.getId()))
.andReturn(user);
EasyMock.expectLastCall().times(1);
EasyMock.replay(userRepositoryMock);
userService.getUser(user.getId());
EasyMock.verify(userRepositoryMock);
}
我正在尝试测试服务 class 以查看它是否调用了存储库的正确方法。存储库只是从 CouchDbRepositorySupport
服务测试
@RunWith(EasyMockRunner.class)
@SpringApplicationConfiguration(App.class)
public class ServiceTest {
@Rule
public EasyMockRule mocks = new EasyMockRule(this);
@TestSubject
UserService userService = new UserServiceImpl();
@Mock
UserRepository userRepositoryMock;
@Test
public void testGetUser() {
User user = new User("Bob","bob87);
user.setId("bob87"); //username is the id
userService.getUser(user.getId());
EasyMock.expect(userRepositoryMock.get(user.getId())).andReturn(user); //the line where the error occurs
EasyMock.expectLastCall().times(1);
EasyMock.replay(userRepositoryMock);
EasyMock.verify(userRepositoryMock);
}
}
但是我得到一个 IllegalStateException
java.lang.IllegalStateException: missing behavior definition for the preceding method call: CompanyRepository.get("Optis") Usage is: expect(a.foo()).andXXX()
你需要告诉你的 mock 要做什么并调用 replay() 然后调用调用这个 mock 的服务:
public void testGetUser() {
User user = new User("Bob","bob87);
user.setId("bob87"); //username is the id
EasyMock.expect(userRepositoryMock.get(user.getId()))
.andReturn(user);
EasyMock.expectLastCall().times(1);
EasyMock.replay(userRepositoryMock);
userService.getUser(user.getId());
EasyMock.verify(userRepositoryMock);
}