環境
flutter
dart
mockito
やりたいこととできないこと
現在、 メソッドAの返り値をテストする際にメソッドA内にあるメソッドBの返り値をモック化しようとしています。
一応、メソッドA内で実行されるメソッドBの返り値を引数にすればモック化せずにテストできるのですが、既存のコードを変更してしまうためこの解決策はやりたくないです。
コード
dart
1 2// sample.dart 3class Sample { 4 int a (){ 5 return b() + 4; 6 } 7 8 int b (){ 9 return 3; 10 // 普通は7 11 // mock化のテストなら9になるはず 12 } 13} 14
dart
1 2// sample_test.dart 3 4import 'package:sellca_pad_3/models/sample.dart'; 5import 'package:flutter_test/flutter_test.dart'; 6import 'package:mockito/annotations.dart'; 7import 'package:mockito/mockito.dart'; 8import 'sample_test.mocks.dart'; 9 10([Sample]) 11void main(){ 12 test('モックのテスト', (){ 13 final mockSample = MockSample(); 14 when(mockSample.b()).thenReturn(5); 15 final sample = Sample(); 16 final addResult = sample.a(); 17 expect(addResult, 9); 18 }); 19} 20
このテストの結果の期待値と実際の値
実際の値: 7
期待値: 9
when(mockSample.b()).thenReturn(5);でメソッドbの返り値を3から5に変更し、これでメソッドaの返り値の値がメソッドbの返り値(3)+4から、メソッドbをモック化した返り値(5)+4で9になるようにしたかったのですが、これではモック化していないメソッドbがメソッドa内で実行されてしまうので、返り値が7になってしまいます。
この問題を解決するために何かアドバイスがあればお願いします。
あなたの回答
tips
プレビュー