public async Task Test1( IEnumerable <Detail> j1, IEnumerable <Detail> j2, IEnumerable <LaboriousDetail> j12, IEnumerable <LaboriousDetail> j21) { // Arrange var experimentInfo = new ExperimentInfo(); experimentInfo.J1.AddRange(j1); experimentInfo.J2.AddRange(j2); experimentInfo.J12.AddRange(j12); experimentInfo.J21.AddRange(j21); var experiment = new Experiment { Id = Guid.NewGuid(), TestsAmount = 1 }; var generatorMock = new Mock <IExperimentGenerator>(); generatorMock.Setup(g => g.GenerateDataForTest(It.Is <Experiment>(ex => ex.Id == experiment.Id), It.IsAny <int>())) .Returns(() => experimentInfo); var originalGenerator = new ExperimentGenerator(new RandomizeService()); generatorMock.Setup(g => g.GenerateP(It.IsAny <IOnlineChainNode>())) .Callback <IOnlineChainNode>(node => originalGenerator.GenerateP(node)); ExperimentInfo resultInfo = null; var experimentTestResultService = new Mock <IExperimentTestResultService>(); experimentTestResultService .Setup(e => e.SaveExperimentTestResult(It.Is <Guid>(id => id == experiment.Id), It.IsAny <ExperimentInfo>())) .Callback <Guid, ExperimentInfo>((id, info) => resultInfo = info); var experimentPipeline = new ExperimentPipeline( generatorMock.Object, Mock.Of <IWorkerExperimentService>(), experimentTestResultService.Object, Mock.Of <IReportsService>(), Mock.Of <ILogger <ExperimentPipeline> >(), Mock.Of <IOptions <DbSettings> >(), new OnlineExecutor()); // Act await experimentPipeline.Run(Enumerable.Empty <Experiment>().Append(experiment)); // Assert Assert.NotNull(resultInfo); }