2016-11-02 2 views
0

얼마나 많은 결과가 내 Save method에 전달되는지보고 내 방법 중 하나를 테스트하려고합니다. 관련 라인은 : 나는 분명히이를 테스트하는 방법에 대해 뭔가를 놓친 거지목록 Count가 특정 값인지 테스트하는 방법은 무엇입니까?

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

... 내가이 항상 통과로 표시되어 SaveSamplesAsync

로 전달되고 있는지의 Count을 테스트 할 방법에 대해 설명합니다. 나는 과 sampleCount + 1Assert에 시도해 보았습니다.

필요한 경우 전체 테스트 방법을 보여줄 수 있습니다.

+0

과 같을 것이다

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); } } 

을 다음은이 [mcve] 그 문제를 재현보기 – Nkosi

답변

1

참조 Actions with argument matchers

가정 시험이

//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); 
관련 문제