난 내 작은 프로젝트에 대한 몇 가지 테스트를 작성하려고 시도하고 있지만,이(DI 포함) ASP.NET MVC3에서 TDD 문제
내가를 사용 (I 1 개 테스트 'Create_Class'로 시작하고) 실패 할 것 저장소 패턴 및 사용 생성자 의존성 삽입 (Dependency Injection) : 여기
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;
}
내가 nullreferenc를 얻을 순간에 내 (모든 테스트 전에 실행) testinitializer와의 TestClass과 첫 번째 테스트
[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"]);
}
}
입니다 뷰에 예외 상황을
을 (assert.isNotNull 실패) 여기 내 DummyRepository의 중 하나입니다
class DummyOpdrachtRepository : IOpdrachtRepository
{
List<Opdracht> opdrachten;
public DummyOpdrachtRepository()
{
opdrachten = new List<Opdracht>();
}
public void addOpdracht(Opdracht opdracht)
{
opdrachten.Add(opdracht);
}
public string GetDocentID(int OpdrachtID)
{
var opdracht = opdrachten.Where(o => o.OpdrachtID == OpdrachtID).FirstOrDefault();
return opdracht.StamNummer;
}
public Opdracht Find(int id)
{
return opdrachten.Where(o => o.OpdrachtID == id).FirstOrDefault();
}
}
은 일반적으로 내가 코드를을 writting 전에, 내가 알고있는 테스트를 작성해야
(나는 TDD를 확신하고 , 내가 최근 Java 프로젝트에서 성공적으로 사용했기 때문에). 하지만 여기 나는이 코드를 많이 알고 KlasController.Create 액션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));
}
코드입니다 .. 작동하지 않는 것,하지만 난 정말이 일을하고 싶다. 사전 :) 나를 도와위한
덕분에
테스트 방법에 따라 만들기 - 작업은 RedirectToRouteResult 유형의 결과를 반환해야합니다. 맞아? – vladimir77