XUnit创建操作服务模拟失败

肌动蛋白

我试图在类构造函数中模拟我的服务的create方法:

serviceMock.Setup(p => p.AddClinic(GetTestClinicModel()))
                .Returns(GetTestClinic());

模拟模型和模拟实体

private CreateClinicBindingModel GetTestClinicModel()
{
    return new CreateClinicBindingModel()
    {
        Name = "Clinic-3"
    };
}

private Clinic GetTestClinic()
{
    return new Clinic()
    {
        Id = 3,
        Name = "Clinic-3"
    };
}

测试方法

[Fact]
public void Add_ValidObjectPassed_ReturnsCreatedResponse()
{
    // Act
    var createdResponse = controller.Add(GetTestClinicModel());
    // Assert
    Assert.IsType<CreatedAtActionResult>(createdResponse);
}

控制器添加方法

[HttpPost("create")]
public IActionResult Add(CreateClinicBindingModel model)
{
    if (!ModelState.IsValid)
    {
        return BadRequest();
    }
    var entity = _service.AddClinic(model);
    return Created(entity);
}

所以我的问题是测试失败,当我调试_service.AddClinic()方法时,它返回null。

模拟服务不返回预期的实体(诊所)。

我该如何解决?

恩科西

问题是安装程序期望GetTestClinicModel()调用时创建的特定实例

但是,在执行测试时不会使用同一实例,因为GetTestClinicModel()再次调用创建一个全新的实例

因此,由于存在单独的实例,该模拟将返回null。

考虑更改设置以使用类似参数的匹配器 It.Is<T>()

serviceMock
    .Setup(_ => _.AddClinic(It.Is<CreateClinicBindingModel>(m => m.Name == "Clinic-3")))
    .Returns(GetTestClinic());

上面的设置告诉模拟在获得与提供的谓词匹配的实例时其行为符合预期

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

服务连接创建操作失败

xUnit的模拟服务

创建了一个用户服务。返回错误“步骤GROUP生成失败:不允许操作”

React-Redux 创建操作失败,表单

模拟服务时Angular2测试失败

创建服务失败,并显示“未指定命令”

创建服务以检测用户的任何操作

为 CRUD 操作创建基本服务

为什么模拟服务时模拟的mvc测试失败并显示异常?

xUnit 测试:如何模拟工厂?

在Angular测试中使用模拟服务创建类实例

使用翻新2和rxjava创建的Android模拟宁静服务?

无法在(WCF数据服务)中创建简单的服务操作

创建与BizTalk服务器一起安装的BizTalkDBversion COM组件失败,没有足够的存储空间来完成此操作

Github操作:由于服务器指纹,xcodebuild失败

如何配置用Go编写的Windows服务的失败操作?

iTunes store操作失败:您无权使用此服务

使用rspec和factory测试创建操作失败

文档创建失败是否算作Firestore中的写操作?

“扳手操作失败”,创建NULL_FILTERED索引

在Jenkins下xUnit失败:BadImageFormatException

仅在 Google 上的智能家居操作模拟器中调用失败

在应用程序的服务模式下CPrintDialog创建失败

尝试创建客户端服务库时,wsimport失败

无法启动服务Web:OCI运行时创建失败:

在OSGi DS服务上使用@Reference时,组件创建失败

错误-创建服务时退后重新启动失败的容器

在部署定义中使用“ topologySpreadConstraints”时创建服务失败

MarkAsJunk 操作错误代码 9020。获取“发生内部服务器错误。操作失败。”