2011-09-09 3 views
10

좋아 - NancyFx를 좋아합니다. 몇 줄의 웹 응용 프로그램을 작성하는 것은 놀라운 일입니다!시험 운전 낸시 모듈

하지만 NancyModules을 단위 수준에서 어떻게 테스트합니까?

전체 (거의) 응용 프로그램 스택을 테스트하는 훌륭한 방법을 제공하는 낸시 (Nancy.Testing on NuGet)와 함께 제공되는 excellent testframework을 알고 있습니다. 하지만 이제는 유닛 레벨 테스트를 통해 TDD 방식으로 내 NancyModule의 내용을 살핀다.

경로는 생성자에서 정의되며, 종종 전체 동작을 구성하는 lamda 표현식과 함께 단위 테스트에서 "도달 할 수 없음"이라고 느낍니다. 그러나 나는 그 길의 행동을 시험하는 방법에 대해 명백한 것을 놓쳤는가?

예를 들어이 간단한 응용 프로그램의 단위 테스트는 어떻게됩니까?

public class ResouceModule : NancyModule 
{ 
    private IProductRepository _productRepo; 

    public ResourceModule(IProductRepository repo) : base("/products") 
    { 
     Get["/list"] = parameters => { 
      return View["productList.cshtml", repo.GetAllProducts()]; 
     }; 
    } 
} 

테스트하기 전에 프로덕션 코드를 작성했습니다. ... 테스트 시작 방법에 대한 제안이 있습니까?

답변

11

당신은 우리가 제공하는 테스트 도구 먼저 디바이스를 테스트 할 수 있습니다 테스트 시작에

  • 는 당신이 테스트중인이 모듈 당신이 원하는 어떤 가짜 객체를 포함하는 부트 스트 래퍼를 구성합니다.
  • 테스트에서 특정 경로 (예 : GET/list)를 실행하십시오. 일부 반복 코드를 제거하기위한 작은 도우미가 필요할 수 있습니다.
  • 당신이 HTML 몸체의 도우미와 함께 요청 및 응답 객체 (헤더, 쿠키 등)에 대한 모든 액세스 권한을 가지며, 1.8에서 JSON, XML 및 문자열 응답을 전달하는 헬퍼가 몸.
  • 다음 경로로 이동하여 린스하고 반복하십시오.

좋아, 그래서 당신이하지 있어 단지 모듈을 테스트,하지만 당신은 호출 스택 보면, 거기에 훨씬 이전 또는 이후에 진행되지는 거래에서의 큰 없습니다, 그래서 당신은 당신의 길을 명중 내 책 :-) 만약 당신이 정말로 모듈을 완벽하게 고립시키고 싶다면, 직접 만들어서 그에 따라 개별 경로를 찌를 수있다.

+0

감사합니다. 스티븐 - 내가 뭘 찾고 있었습니까? –

4

Nancy.Testing의 일부로 구성 가능한 부트 래퍼를 사용하여 IoC 설정을 포함하여 설정을 제어 할 수 있습니다. 이를 통해 하위 수준 종속성없이 모듈을 테스트하고 TDD를 사용할 수 있어야합니다.