2016-10-25 12 views
0

おはよう!NS代替if-else条件

[SetUp] 
    public void SetUp() 
    { 
     controller = Substitute.For<IApplicationController>(); 
     view = Substitute.For<ICamerasView>(); 
     presenter = new CamerasPresenter(controller, view); 
     argument = InitializeDevicesList(); 
     presenter.Run(argument); 
    } 

    private List<string> InitializeDevicesList() 
    { 
     List<string> devicesList = new List<string>(); 
     Device device = new Device(); 

     devicesList.Add(device.Name); 

     return devicesList; 
    } 

    [Test] 
    public void RunIfDeviceListIsNotEmpty() 
    { 
     view.DidNotReceive().SetUIOnNoConnectedDevices(); 
     view.Received().FillCamerasListView(argument); 
     view.Received().Show(); 

    } 

実際に次のコード

public override void Run(List<string> argument) 
    { 
     connectedCameras = argument; 
     if(connectedCameras.Count == 0) 
     { 
      SetUIOnNoConnectedDevices(); 
     } 
     else 
     { 
      FillCamerasListView(); 
     } 
     View.Show(); 
    } 

をテストし、私の問題はFillCamerasListView方法は、テストで呼び出しされていないということです。私は、私は次のテストを持って、あなたの助けを必要としています。しかし、この場合Runメソッドを呼び出すと予想されていました。だから私は何が問題なのか想像することができないので、私はあなたの助けに感謝します。御時間ありがとうございます!

+0

は 'FillCamerasListView()' '' view.FillCamerasListView(connectedCameras)を呼び出していますか?あなたが得ているアサーションの例外は何ですか? –

+0

よろしいですか?私はプレゼンターに呼び出しSetUIOnNoConnectedDevicesとFillCamerasListViewはview.FillCamerasListViewとview.SetUIOnNoConnectedDevices上の単純なラッパーです。私はこの文字列view.Received()の例外を取得しています。FillCamerasListView(引数);テスト中。 – Crispried

+0

例外エラー: タイプの例外「NSubstitute.Exceptions.ReceivedCallsException」はNSubstitute.dllで発生したが、ユーザーコードで処理されなかった 追加情報:コールマッチングを受け取るために期待: \t FillCamerasListView(一覧) 実際には一致するコールは受信されませんでした。 は1非マッチングコール(「*」文字で示された非マッチングの引数)を受信: \t FillCamerasListView(*リスト *) – Crispried

答えて

0

This example passes。この問題は、コメントで説明したように、FillCamerasListViewに渡された引数を変更しているあなたの例のように見えます。

いくつかのオプション:

  1. は、テストの期待に一致するようにコードを変更します。つまり、Runに与えられた引数をFillCamerasListViewに渡します。
  2. 使用view.ReceivedWithAnyArgs().FillCamerasListView(null)コールを主張するためには、渡された引数の詳細について心配することなく行われました。
  3. view.Received().FillCamerasListView(Arg.Is<List<string>>(x => Matches(x, argument))を使用してください。Matchesは、Runに渡されたargumentに基づいて、指定された引数が正しいかどうかを判断する独自のコードです。
関連する問題