0
프로젝트 단위 테스트를하고 있는데 NS substitute가 예상대로 작동하도록하는 방법을 알아낼 수 없습니다. 내가 가지고있는 문제는 내가 대체해야 할 코드가 while 루프에 있고 대체 값에서 반환되는 값에 따라 루프가 계속 진행되는지 여부가 결정된다는 것입니다. 내가하고 싶은 무엇NSubstitue에서 IEnumerable을 사용하는 어셈블러 정규 표현식
는 전달 내용에 따라 다른 결과를() 프로세스를 반환합니다. 내가
api.Process(Arg.Is<IEnumerable<int>>(new[] {1,2,3}, Arg.Any<bool>()).Returns(new ProcessingResult(){Success = true, IdsNotProcessed = List<int>{30}});
을 시도했지만이 processingResult로 작동하는 것 같다하지 않습니다 온다 다시 널 NSubstitue 때문에 인수와 일치하지 않습니다.
[Test]
public void TestTwoLoops()
{
var api = Substitute.For<IApi>();
api.Process(/*list containing 1,2,3*/, Arg.Any<bool>()).Returns(new ProcessingResult(){Success = true, IdsNotProcessed = List<int>{30}});
api.Process(/*list containing 30*/, Arg.Any<bool>()).Returns(new List<int>{});
var sut = new WidgetMaker(api);
sut.MakeWidget();
}
public class WidgetMaker
{
public WidgetMaker(IApi api)
{
_api = api;
}
public void MakeWidgets(IEnumerable<int> widgetIds)
{
var idsToProcess = widgetIds.ToList();
while(true)
{
if(!idsToProcess.Any())
{
berak;
}
var processingResult = _api.Process(idsToProcess, false);
if(processingResult.Success)
{
idsToProcess.Clear();
idsToProcess.AddRange(processingResult.IdsNotProcessed);
}
else
{
break;
}
}
}
private IApi _api;
}