私は次のコードを持っている:嘲笑オブジェクト
@RunWith(MockitoJUnitRunner::class)
class OnboardingViewModelTest {
@Mock lateinit var authService : AuthService
lateinit var internetProvider: InternetStatusProvider
private lateinit var viewModel: OnboardingViewModel
@Before
fun setup() {
internetProvider = mock()
whenever(internetProvider.hasInternet()).thenReturn(true)
}
InternetStatusProvider
のコンストラクタはそうのようになります。
InternetStatusProvider(context:Context)
internetProvider.hasInternet()
をスタブするとき、私はNullPointerException
を取得していますがメソッドの実装ではコンストラクタで渡されたcontext
が使用され、実際のメソッドが呼び出されているためです。
私はここで何が欠けていますか?全体のポイントは、このメソッドの実際の実装をスタブすることですか?
'hasInternet()'関数のシグニチャは何ですか? 'open'でなければ、Mockitoは最終メソッドをスタブすることができないので、' internetProvider.hasInternert() 'が呼び出されます。 – nhaarman
天才、かなり明白なはずでしたね。だからスタッブされたメソッドを開く必要があります...私はこれが好きか分かりません。これを回答として提出していただければ受け入れます。 – StuStirling