

## 環境

flutter  
dart  
mockito

_****やりたいこととできないこと****_  
現在、 メソッドAの返り値をテストする際にメソッドA内にあるメソッドBの返り値をモック化しようとしています。  
一応、メソッドA内で実行されるメソッドBの返り値を引数にすればモック化せずにテストできるのですが、既存のコードを変更してしまうためこの解決策はやりたくないです。

## コード

[code]

    // sample.dart
    class Sample {
      int a (){
        return b() + 4;
      }
    
      int b (){
        return 3;
        // 普通は７
        // mock化のテストなら9になるはず
      }
    }
    
[/code]

[code]

    // sample_test.dart
    
    import 'package:sellca_pad_3/models/sample.dart';
    import 'package:flutter_test/flutter_test.dart';
    import 'package:mockito/annotations.dart';
    import 'package:mockito/mockito.dart';
    import 'sample_test.mocks.dart';
    
    @GenerateMocks([Sample])
    void main(){
      test('モックのテスト', (){
        final mockSample = MockSample();
        when(mockSample.b()).thenReturn(5);
        final sample = Sample();
        final addResult = sample.a();
        expect(addResult, 9);
      });
    }
    
[/code]

_****このテストの結果の期待値と実際の値****_

期待値: 9  
実際の値: 7

`when(mockSample.b()).thenReturn(5);`
でメソッドbの返り値を3から5に変更し、これでメソッドaの返り値の値がメソッドbの返り値(3)+4から、メソッドbをモック化した返り値(5)+4で9になるようにしたかったのですが、これではモック化していないメソッドbがメソッドa内で実行されてしまうので、返り値が7になってしまいます。  
この問題を解決するために何かアドバイスがあればお願いします。


CC BY-SA 4.0
2021-10-27T10:45:35.733
83285
2021-12-12T12:20:46.163
2021-10-28T01:17:21.733
3060
36424
question
flutter dart mockito
メソッドAの返り値をテストする際にメソッドA内にあるメソッドBの返り値をモック化したい。


ご提示したコードは不完全だと思いますが、見たところご提示したコードはモックの機能を入れましたが、利用していないです。

とても簡単な話です、このコードで新しいSampleのインスタンスを作成したです、このインスタンスはモックと完全に関係ないインスタンスです。

[code]

    final sample = Sample();
    
[/code]


CC BY-SA 4.0
2021-12-12T12:20:46.163
84091
2021-12-12T12:20:46.163
41314
83285
answer