-1
I持って、次の試験方法:Mockitoモックは動作しません正しく
@Override
public Boolean register(String email, String name, String password, String password2) {
if (password.equals(password2)) {
try {
String pwd = hashPassword(password);
User user = new User(email, name, pwd);
AuthStorage authStorage = new AuthStorageImpl();
authStorage.registerNewUser(user);
return true;
} catch (NoSuchAlgorithmException | AuthStorageException e) {
return false;
}
}
// If passwords don't match
return false;
}
たぶん、それは例外をThowさんとすべきregisterNewUser
を呼び出す:次のクラスメソッドをテストし
@RunWith(MockitoJUnitRunner.class)
public class AccountManagerTest {
@InjectMocks
private AccountManager accountManager = new AccountManagerImpl(null);
@Mock
private AuthStorage authStorage;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
/* REGISTER TESTS */
@Test
public void test_whenRegister_withAlreadyExistingEmail_thenDoNotRegister() throws AuthStorageException {
String email = "[email protected]";
String name = "Foo";
String password = "123456";
String password2 = "123456";
doThrow(new AuthStorageException("Email already in use")).when(authStorage).registerNewUser(Matchers.any());
assertFalse(accountManager.register(email, name, password, password2));
}
}
このメソッドはfalse
を返しますが、デバッグ時には例外がスローされず、プログラムはtrue
を返します。私は間違って何をしていますか?
私はすでにそれを試してみました。これは新しいAccountManagerImpl(null); ' – vikingsteve
です。これはできません。なぜなら、Mockitoはインターフェースをインスタンス化できないからです。 @ InjectMocks private AccountManagerImpl accountManager 私は同じエラーが発生します – JosepRivaille
あなたの質問に対する答えは[このページにあります](https:// github .com/mockito/mockito/wiki/Mocking-Object-Creation) –