我正在请求模拟,但显示为空?

时间:2019-09-11 09:54:34

标签: c# visual-studio unit-testing moq

In node.js, how to use child_process.exec so all can happen asynchronously? enter image description here

我正在模拟注册代理机构的用户,但是它显示了某些属性Null。

我是新手,对此我不理解。

我正试图使模拟注册机构用户成为模型

{% extends 'pizzas/base.html' %}

{% block content %}
    <p>Pizzas</p>
    <ul>
        {% for pizza in pizzas %}
            <li>{{ pizza }}</li>
        {% empty %}
            <li>No pizza duh.</li>
        {% endfor %}
    </ul>

{% endblock content %}

这是我要测试的

[TestMethod]
public async Task ABCreateActionResult_ReturnsBadRequest_Badrequest()
{
    RegisterAgencyUserRequest mock = new Mock<RegisterAgencyUserRequest>().Object;

    var controller = _accountController.RegisterAgencyUser(mock);

    JsonResult viewResult = (JsonResult)await _accountController.RegisterAgencyUser(mock);

}

2 个答案:

答案 0 :(得分:1)

您仅模拟要测试的类的依赖项。因此,您无需模拟POCO。只需使用如下伪数据进行设置:

var model = new RegisterAgencyUserRequest
{
    Address = "Value1",
    AgencyName = "Value2",
    //...
};

并按如下所示使用它:

var controller = _accountController.RegisterAgencyUser(model);

您对该方法的依赖性为:

_inviteRepository.GetInvitaionCodeDetails()

因此,您需要在初始化时模拟_inviteRepository并将其注入到测试中的主题控制器中。

答案 1 :(得分:0)

您需要在模拟上进行设置,您的代码只会创建一个空对象。

var mock = new Mock<RegisterAgencyUserRequest>();
mock.Setup(x => x.Address).Returns(() => "some address");
RegisterAgencyUserRequest request = mock.Object;

编辑:Azhar Khorasany的答案通过不模拟POCO而是模拟您在测试中使用的服务/存储库来说明应如何进行。