由于BaseController

时间:2018-05-07 08:40:09

标签: unit-testing asp.net-core nunit moq

所以我有一个控制器“ItemsController”,我必须在NUnit中创建一个单元测试用例。

但我不知道如何使它工作,因为它扩展了只有get方法而没有setter的Base Controller,因此我运行的任何测试都会抛出错误,因为“Container”为null。我无法创建Set方法,因为它通常从URL获取值。

如何在可能的情况下将URL传递给我的测试用例?如何确保URL被正确模拟?或者有没有人有更好的方法/建议?

public class BaseController : Controller
{
    protected string Container
    {
        get
        {
            var cont = this.RouteData.Values["container"] as string;
            return cont;
        }
    }
}


public class ItemsController : BaseController
{
    private IItemsServiceRepository _esc;

    public ItemsController(IItemsServiceRepository esc)
    {
        _esc = esc;
    }

    [HttpGet]
    public IActionResult GetItems()
    {
        var items = _esc.GetItems(Container);

        var results = new List<ItemDb>();

        foreach (var item in items)
        {
            results.Add(new ItemDb
            {
                Title = item.Title,
                Type  = "TBD",
                Uri   = "TBD"
            });
        }

        return Ok(results);
    }
}

我会告诉你我的单元测试,但现在一切都搞乱了。

如果您需要任何其他信息,请与我们联系。

注意:有谁能告诉我这是怎么回事? 到目前为止,我被认为是重复的那个链接根本没有帮助。由于我是TDD的新手,所以有一些解释是首选。

0 个答案:

没有答案