ASP.NET MVC3中的TDD问题(使用DI)
我正试图为我的一个小项目编写一些测试,但它们似乎失败了(我从一个测试“Create_Class”开始) 我使用存储库模式并使用构造函数依赖项注入: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
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);