Spring EasyMock没有';不要使用模仿的方法
我创建了以下测试Spring EasyMock没有';不要使用模仿的方法,spring,easymock,Spring,Easymock,我创建了以下测试 @Test public void whenCreate_ThenAccountsShouldBeFound() { Account account = new Account(); account.setUsername("Test"); account.setFirstName("FirstName"); account.setLastName("LastName"); account.setPassword("Password");
@Test
public void whenCreate_ThenAccountsShouldBeFound() {
Account account = new Account();
account.setUsername("Test");
account.setFirstName("FirstName");
account.setLastName("LastName");
account.setPassword("Password");
account.setEmail("maxmuster@hs-pforzheim.de");
accountService.createAccount(account);
Account a = new Account();
a.setUsername("Teswt");
a.setFirstName("FirstName");
a.setLastName("LastName");
a.setPassword("Password");
a.setEmail("maxmustee@hs-pforzheim.de");
accountService.createAccount(a);
AccountRepository accountRepository = createNiceMock(AccountRepository.class);
expect(accountRepository.findAll()).andReturn(Collections.singletonList(a));
replay(accountRepository);
assertEquals("Username name should be Test", "Test", accountService.getAllAccounts().iterator().next().getUsername());
}
考试通过了,但我不知道为什么。通常,模拟方法应该返回另一个对象,这将导致错误的测试结果。对我来说,Mock方法似乎不起作用,但为什么呢?实际上,Mock是正确的。只是你的代码错了 您为AccountRepository创建了一个模拟,但未将此模拟设置为accountService。因此,当您调用accountService.getAllAccounts()时,该accountService将调用真实的AccountRepository,而不是模拟的AccountRepository。因此,您将在DB中获得2个写入的元素 并且,当将“Test”与返回列表的第一个元素进行比较时,assert是正确的 要修复此问题,只需将AccountRepository设置为accountService
AccountRepository accountRepository = createNiceMock(AccountRepository.class);
accountService.setAccountRespository(accountRepository);
就这些
谢谢,Linh您需要给出测试代码才能回答。