Я предполагаю, что это ошибка с моей стороны, но я не могу понять, почему ReSharper dotcover показывает мое тестовое покрытие определенных запросов (и команд тоже) как 0%.
Итак, у меня есть .NET Core CQRS API, который состоит из большого количества EF Core LINQ. Ниже приведен простой пример одного из основных методов выполнения моих запросов (я не упомянул конструктор DI, но уверен, что вы поняли идею):
public bool Execute(SelectIsReportRequested query)
{
var context = _clientDatabase.GetContext(query.DatabaseId);
var result = (from a in context.Assessments
join r in context.Registrations on a.AssessmentId equals r.AssessmentId
where a.PublicId == query.ResponseId
select r.ReportRequested).SingleOrDefault();
return result == 1;
}
Затем у меня есть следующий тест, который имитирует различные биты и запускает запрос:
[TestMethod]
public void It_should_return_true_if_a_report_has_been_requested_for_the_givenassessment()
{
const int assessmentId = 1;
var responseId = Guid.NewGuid();
var mockRepository = new Mock<ICViewClientContext>();
var assessments = new List<Assessments>
{
new Assessments { AssessmentId = assessmentId, PublicId = responseId },
};
var registrations = new List<Registrations>
{
new Registrations { AssessmentId = assessmentId, ReportRequested = 1 },
};
mockRepository.Setup(x => x.Registrations).Returns(registrations.AsDbSetMock().Object);
mockRepository.Setup(x => x.Assessments).Returns(assessments.AsDbSetMock().Object);
var mockClientDatabase = new Mock<IClientDatabase>();
mockClientDatabase.Setup(x => x.GetContext(1)).Returns(mockRepository.Object);
var query = new Queries.Assessments.SelectIsReportRequested(2, responseId);
var handler = new Queries.Assessments.SelectIsReportRequestedHandler(mockClientDatabase.Object);
var result = handler.Execute(query);
Assert.AreEqual(true, result);
}
Тесты пройдены (и также не пройдут, если я сломаю логику в LINQ) или любую другую логику в коде.
Однако запуск dotcover запускает тест, проходит его, но говорит, что ни один из них не покрыт.
Я хотел бы знать, почему, потому что это действительно сводит меня с ума и беспокоит меня, что я сделал что-то совершенно неправильное!