2016-11-02 16 views
0

私はどれくらい多くの結果が私のSave methodに渡されているかを見て、私の方法の1つをテストしようとしています。適切な行は次のとおりです。リストCountが特定の値であることをテストするにはどうすればよいですか?

await paymentSampleRepository.Received() 
      .SaveSamplesAsync(Arg.Do<List<PaymentSamplePopulation>>(x => 
            Assert.Equal(sampleCount, x.Count()) 
          ), modifiedBy); 

私は明らかにこれをテストする方法について何かをしないのです...どのように私はこれは常に合格として表示されSaveSamplesAsync

に渡されているもののCountをテストします。私は、とsampleCount + 1Assertに試してみました。

必要な場合は、テスト方法全体を表示できます。

+0

次のようになりますと仮定すると、[MCVE]それは問題を再現表示します – Nkosi

答えて

1

リファレンスActions with argument matchers

public interface ILoader { 
    Task LoadAsync(List<int> data); 
} 

public class SystemUnderTest { 
    private readonly ILoader loader; 
    public SystemUnderTest(ILoader loader) { 
     this.loader = loader; 
    } 

    public async Task InvokeAsync(int count) { 
     var data = Enumerable.Range(1,count).ToList(); 
     await loader.LoadAsync(data); 
    } 

} 

次のテストは、この

//Arrange 
var expected = 2; 
var actual = -1; 

var loader = Substitute.For<ILoader>(); 
loader.LoadAsync(Arg.Do<List<int>>(x => actual = x.Count); 

var sut = new SystemUnderTest(loader); 

//Act 
await sut.InvokeAsync(expected); 

//Assert 
Assert.Equal(expected, actual); 
関連する問題