私は以下のテストケースを書いていますが、これは良いテストであれば少し混乱します。なぜなら、私がuserDataMockを擬似すると、本当の結果を変えていると言えるからです。だから私はすでに最終結果を "期待"に変更しています。だから私は実際のテストを行うときに、私はすでにそれを嘲笑しているので、それが可能な唯一の結果は "期待"ですMockito.when(userDataMock.doStandardLogin(loginInfoMock)).thenReturn(expected);
これまでは開発者がこれをやっているのを見たことがありますが、何が間違っているのか考えていないのですか?junit - 模擬テストの代わりに実際のテストを行う方法(結果を変更する)
public class DoStandardLoginUsecaseTest {
private DoStandardLoginUsecase target;
private MyApplication contextMock;
@Before
public void beforeEach() {
contextMock = Mockito.mock(MyApplication.class);
// Note that you need to mock the getPresenterComponent
// but I don't know what it returns.
target = new DoStandardLoginUsecase(contextMock);
}
@Test
public void buildUseCaseObservable() {
UserDataRepository userDataMock = Mockito.mock(UserDataRepository.class);
StandardLoginInfo loginInfoMock = Mockito.mock(StandardLoginInfo.class);
target.mUserDataRepo = userDataMock;
target.setLoginInfo(loginInfoMock);
Observable<Login> expected = // create your expected test data however you like...
Mockito.when(userDataMock.doStandardLogin(loginInfoMock)).thenReturn(expected);
Observable<Login> actual = target.buildUseCaseObservable();
Assert.areSame(actual, expected);
}
}
更新:
DoStandardLoginUsecase.java:
public class DoStandardLoginUsecase extends BaseUseCase {
@Inject
UserDataRepository mUserDataRepo;
private StandardLoginInfo loginInfo;
@Inject
public DoStandardLoginUsecase(UserDataRepository userDataRepository) {
mUserDataRepo = userDataRepository;
}
@Override
public Observable<Login> buildUseCaseObservable() {
return mUserDataRepo.doStandardLogin(loginInfo);
}
public void setLoginInfo(StandardLoginInfo loginInfo) {
this.loginInfo = loginInfo;
}
}
テストしているコード/動作とは何ですか?あなたがそれを嘲笑しないなら、あなたは良いです。テスト中のコードを実行していない場合でも、あなたはうんざりしています。嘲笑のポイントは入力を制御することです、それはまったく問題ありません。あなたはそれなしで特定の条件をテストすることはできませんでした。 – Robert
ログインしているユーザーをテストしようとしていて、トークンが返ってきました。 DoStandardLoginUsecaseというクラスでは、私はUserDataRepositoryを呼び出して改造呼び出しを行うようにしています。だから私は実際にここで本当のテストを行い、本当の結果を得るだろう。 – j2emanue
テスト中のメソッドを共有しても構いませんか?テストなしでテストの質を判断するのは難しいです。 –