Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 存储库从引导容器获取上下文的实例_Unit Testing_Controller_Asp.net Mvc 5_Repository Pattern_Bootstrapping - Fatal编程技术网

Unit testing 存储库从引导容器获取上下文的实例

Unit testing 存储库从引导容器获取上下文的实例,unit-testing,controller,asp.net-mvc-5,repository-pattern,bootstrapping,Unit Testing,Controller,Asp.net Mvc 5,Repository Pattern,Bootstrapping,存储库是一个Mvc控制器的道具,我正在尝试编写一个测试方法来检查这个控制器, 但我在容器调用中出错 我是mvc和测试方面的新手。。所以我不知道从哪里开始 我该怎么做 这是测试的样子: public void SomeTest() { var controller= new SomeController(); var result = SomeController.Index(); Assert.IsNotNull(result);

存储库是一个Mvc控制器的道具,我正在尝试编写一个测试方法来检查这个控制器, 但我在容器调用中出错

我是mvc和测试方面的新手。。所以我不知道从哪里开始 我该怎么做

这是测试的样子:

public void SomeTest()
    {
        var controller= new SomeController();
        var result = SomeController.Index();
        Assert.IsNotNull(result);
     } 
运行测试时收到的错误
SomeContext.dll中发生了类型为
System.NullReferenceException
的异常,但未在用户代码中进行处理存储库是否已初始化?
在控制器中:

private Repository Repository {get;set;}

public ActionResult Index()
{
    Repository = new Repository();
    var something = Repository.DoSomeWork();
    return View(something);
}
在你的测试课上:

public void SomeTest()
{
    var controller = new SomeController();

    var result = controller.Index();

    Assert.IsNotNull(result);
}
或者,如果您正在使用依赖项注入,使用Ninject属性注入,您可以尝试使用Moq注入类:

public class SomeController : Controller
{
    private IRepository repository;

    [Inject]
    public IRepository Repository
    {
        get { return repository; }
        set { repository = value; }
    }

    // GET: /Some/
    public ActionResult Index()
    {
        var someCollection = Repository.SomeMethod("some parameter");

        foreach (var value in someCollection)
        {
            ViewData["message"] += value;
        }
        return View(someCollection);
    }
}
以及具有最小起重质量的试验等级:

public class SomeTestClass
{
    private Mock<IRepository> mockRepository;

    [Test]
    public void GivenSometestThenExpectSomeResult()
    {
        // Arrange
        var controller = new SomeController();

        mockRepository = new Mock<IRepository>();
        mockRepository.Setup(x => x.SomeMethod(It.IsAny<string>())).Returns(new List<string>());

        controller.Repository = mockRepository.Object;

        // Act
        ActionResult result = controller.Index();

        // Assert
        Assert.AreEqual("Index", result.ViewName);
    }
}
public类SomeTestClass
{
私有模拟存储库;
[测试]
public void givensometesthenexpectsometresult()
{
//安排
var controller=new SomeController();
mockRepository=newmock();
mockRepository.Setup(x=>x.SomeMethod(It.IsAny()).Returns(newlist());
controller.Repository=mockRepository.Object;
//表演
ActionResult=controller.Index();
//断言
Assert.AreEqual(“Index”,result.ViewName);
}
}