Я предполагаю, что это ошибка с моей стороны, но я не могу понять, почему 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 запускает тест, проходит его, но говорит, что ни один из них не покрыт.
Я хотел бы знать, почему, потому что это действительно сводит меня с ума и беспокоит меня, что я сделал что-то совершенно неправильно!