使用 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);
}