これは私の側のエラーだと思いますが、ReSharper dotcoverが特定のクエリ(およびコマンドも)のテストカバレッジを0%として表示している理由がわかりません。
そのため、多くのEF CoreLINQで構成されている.NETCore CQRSAPIがあります。以下は、私のクエリのメインの実行メソッドの1つの簡単な例です(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を実行するとテストが実行され、合格しますが、いずれもカバーされていないと表示されます。
それが本当に私を狂わせて、私が完全に間違ったことをしたのではないかと心配しているので、私は理由を知りたいです!
ですから、運が悪ければ自分の問題を解決できたと思います。他の人の役に立つ場合に備えて、自分がしたことを投稿したいと思いました。
ログを取得してJetBrainsに送信しようとしているときに、次のことを行いました。
次に、dotcoverを再実行すると、突然すべてのテストカバレッジが表示され、すべてのテストカバーコードの強調表示が正しく表示されました。
JetBrainsにメッセージを送り返しました。問題が解決した理由についての情報があれば、それも投稿します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加