【发布时间】:2021-11-10 16:26:00
【问题描述】:
我正在使用 .NET CORE 5 应用程序中的 moq 和 Fixture 进行 xUnit 测试。
我的实现类调用QueryResultSummaryHelper,通过调用GetReport方法获取QueryResultSummary对象。我有多个具有不同参数集的GetReport 方法。
在测试类中,我在 QueryResultSummaryHelper moq 对象上使用 Setup,它返回正确的对象,其中有 3 个参数,但是在另一个类中,我尝试在 GetReport 上使用 4 个参数的 Setup 并获得 @987654328 @value,不确定我在拼图中遗漏了什么??
QueryResultHelper Defination
public interface IQueryResultHelper
{
QueryResultSummary GetReport(int recordsCount, bool error, dynamic dataObject);
QueryResultSummary GetReport(int recordsCount, bool error, Exception e);
QueryResultSummary GetReport(int recordsCount, bool error, string customMessage, dynamic dataObject);
QueryResultSummary GetReport(int recordsCount, bool error, string customMessage, Exception e);
}
我正在尝试设置以下方法...
QueryResultSummary GetReport(int recordsCount, bool error, string customMessage, dynamic dataObject);
Test Class
public class SiteEntityTest : SetUps
{
private readonly SiteEntity sut;
public SiteEntityTest()
{
sut = new SiteEntity(
appAmbientStateMoq.Object,
queryResultHelperMoq.Object,
);
}
[Fact]
[Trait("Method", "GetSite")]
public async Task ShouldReturn_Site_IfExist()
{
// other arrange code...
var queryResultSummaryMoq = new QueryResultSummary
{
RecordsCount = siteMoq == null ? 0 : 1,
IsRecordExist = true,
Error = false,
ExecutionMessage = QueryExecutionStatusEnum.Success.ToString(),
Exceptions = (Exception)null,
CustomMessage = SiteSearchStatus
};
queryResultHelperMoq.Setup(x => x.GetReport(
siteWithStatusDataViewMoq == null ? 0 : 1,
false,
SiteSearchStatus,
siteWithStatusDataViewMoq
)).Returns(queryResultSummaryMoq);
}
另一个类中的以下设置确实有效并返回对象值而不是 Null
queryResultHelperMoq.Setup(x => x.GetReport(
contraventionGuideImageMoq == null ? 0 : 1,
false,
contraventionGuideImageMoq
)).Returns(queryResultSummaryMoq);
【问题讨论】:
-
您是否尝试过使用
It.IsAny<dynamic>()而不是siteWithStatusDataViewMoq作为Setup中的最后一个参数? -
我正在尝试 It.IsAny
(siteWithStatusDataViewMoq) 但我认为语法不正确 -
您不必将
siteWithStatusDataViewMoq传递给It.IsAny。调用它而不传递任何参数,就像我在上一条评论中所做的那样 -
它抛出错误 queryResultHelperMoq.Setup(x => x.GetReport( siteWithStatusDataViewMoq == null ? 0 : 1, false, SiteSearchStatus, It.IsAny
() )).Returns(queryResultSummaryMoq) ; -
It.IsAny表示:不关心实例本身,只检查类型。
标签: c# xunit .net-5 autofixture