ASP.NET MVC3中的TDD问题(使用DI)

ASP.NET MVC3中的TDD问题(使用DI),asp.net,asp.net-mvc-3,dependency-injection,tdd,repository-pattern,Asp.net,Asp.net Mvc 3,Dependency Injection,Tdd,Repository Pattern,我正试图为我的一个小项目编写一些测试,但它们似乎失败了(我从一个测试“Create_Class”开始) 我使用存储库模式并使用构造函数依赖项注入: public KlasController() { db = ObjectContextPerHttpRequest.Context; KlasRepo = new KlasRepository(db); LesRepo = new LesRepository(db); OpdrachtRepo = new Opdr

我正试图为我的一个小项目编写一些测试,但它们似乎失败了(我从一个测试“Create_Class”开始)

我使用存储库模式并使用构造函数依赖项注入:

public KlasController() {

    db = ObjectContextPerHttpRequest.Context;
    KlasRepo = new KlasRepository(db);
    LesRepo = new LesRepository(db);
    OpdrachtRepo = new OpdrachtRepository(db);
}

//dependency injection constructor
public KlasController(IKlasRepository KlasRepo, ILesRepository LesRepo, 
    IOpdrachtRepository OpdrachtRepo) {

    this.KlasRepo = KlasRepo;
    this.LesRepo = LesRepo;
    this.OpdrachtRepo = OpdrachtRepo;
}
下面是我的TestClass和testinitializer(在每次测试之前运行)以及第一个测试

[TestClass()]
public class KlasControllerTest
{
    private KlasController Controller;
    private IOpdrachtRepository OpdrachtRepo;

    //Use TestInitialize to run code before running each test
    [TestInitialize()]
    public void MyTestInitialize()
    {
        OpdrachtRepo = new DummyOpdrachtRepository();
        Controller = new KlasController(new DummyKlasRepository(),
            new DummyLesRepository(), OpdrachtRepo);
        Opdracht TestOpdracht = new Opdracht
        {
            OpdrachtID = 1,
            VakID = 1,
            StamNummer = "im1"
        };
        Vak TestVak = new Vak { VakID = 1, VakNaam = "FOOP" };
        TestOpdracht.Vak = TestVak;
        OpdrachtRepo.addOpdracht(TestOpdracht);
    }   

    /// <summary>
    ///A test for Index
    ///</summary>
    [TestMethod()]
    public void CreateKlasDirectsToToonKlassen()
    {
        Klas Klas = new Klas { KlasNaam = "2dNet" };
        RedirectToRouteResult view = Controller.Create(1) as RedirectToRouteResult;
        Assert.IsNotNull(view);                
        Assert.AreEqual("ToonKlassen", view.RouteValues["action"]);

    }
}
我知道这是很多代码,但我真的想让它工作


感谢您提前帮助我:)

正如vladimir77在他的评论中所说的,方法
public ActionResult Create(int id)
是ViewResult类型的,因此您可以将方法更改为执行
返回重定向路由()
,或者将测试更改为

ViewResult view = Controller.Create(1);
Assert.IsNotNull(view); 

根据测试方法,
ViewResult
不能强制转换为
RedirectToRouteResult

,创建操作必须返回RedirectToRouteResult类型的结果。是吗?傻我:p谢谢,现在考试通过了,我又写了一些(通过的)考试。我现在应该很好了,谢谢你的帮助!
public ActionResult Create(int id) //id = opdrachtID 
{
    var Opdracht = OpdrachtRepo.Find(id);
    Vak vak;
    if(Opdracht != null)
        vak = Opdracht.Vak;
    else
        throw new NullReferenceException("Deze opdracht werd niet gevonden");
    return View(new CreateKlasModel(id,vak));
} 
ViewResult view = Controller.Create(1);
Assert.IsNotNull(view);