У меня есть модульный тест, выполненный с использованием moq для издевательства над объектами, и тест работает нормально, и теперь я хочу использовать autofac + moq, но у меня есть несколько проблем. это испытание:callback не вызывается с помощью moq + autofaq
using (var mock = AutoMock.GetLoose())
{
var issues = new List<Issue>();
issues.Add(new Issue { Organization = "org", Repository = "repo", Number = 1 });
issues.Add(new Issue { Organization = "org", Repository = "repo", Number = 2 });
var numKeys = 0;
mock.MockRepository.Create<IStorageService>()
.Setup(myMock => myMock.GetBatchIssues(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<IList<string>>()))
.Callback((string org, string repo, IList<string> keys) => numKeys = keys.Count)
.Returns(issues);
var sut = mock.Create<IssueReceiveService>();
var check = await sut.CheckInStorage("org", "repo", issues);
Assert.AreEqual(issues.Count, numKeys);
}
вызова sut.CheckInStorage возвращение нуля, а переменная numKeys не обновляется до правильного значения. Этот тест работает отлично, используя только moxk, поэтому я полагаю, что мне не хватает чего-то, как настроить макет с autoMock. Где я могу найти дополнительную информацию?
UPDATE:
после еще нескольких тестов я нашел решение
using (var mock = AutoMock.GetLoose())
{
var issues = new List<Issue>();
issues.Add(new Issue { Organization = "org", Repository = "repo", Number = 1 });
issues.Add(new Issue { Organization = "org", Repository = "repo", Number = 2 });
var numKeys = 0;
mock.Mock<IStorageService>()
.Setup(myMock => myMock.GetBatchIssues(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<IList<string>>()))
.Callback((string org, string repo, IList<string> keys) => numKeys = keys.Count)
.Returns(issues);
var sut = mock.Create<IssueReceiveService>();
var check = await sut.CheckInStorage("org", "repo", issues);
Assert.AreEqual(issues.Count, numKeys);
}
Вы должны добавить решение как ответьте и отметьте его как принятый, чтобы этот вопрос не остался без ответа. –