2014-02-27 2 views
1

내 문제는 다음과 같습니다. 프로젝트의 경우 RavenDb 및 Nancy를 사용하여 API를 작성하고 있습니다. 그래서 내 질문은 단위 테스트에 관한 것입니다 ... 우리는 여러 번 제안 된대로 메모리에서 실행되는 embeded db를 사용합니다. , 어떻게 적절한 단위 테스트 엔드 포인트. 예를 들어, 엔드 포인트 작성 계정이 있습니다. 이를 위해서는 사용자를 확보하여 계정을 만들 수 있어야합니다. 무엇을 시뮬레이션하는 가장 좋은 방법은 무엇입니까?RavenDB에서 단위 테스트를 제대로 수행하는 방법

현재 우리는 이런 식으로 작업을 수행합니다

[Test] 
public void UserCanAddAccountToCompany() 
{ 
    var user = 
     new User 
     { 
      Name = Guid.NewGuid().ToString(), 
      Email = Guid.NewGuid().ToString(), 
      Pwd = "password", 
      CompanyReference = new CompanyReference { Id = Guid.NewGuid().ToString(), Name = Guid.NewGuid().ToString() } 
     }; 

    var response = new TestBrowser<User>("User/SignUp", user).Response; 

    var paramUserAccount = new ParamUserAccount() 
    { 
     User = response.Body.DeserializeJson<Result>().User, 
     Account = new Account() { Name = Guid.NewGuid().ToString() } 
    }; 

    var response2 = new TestBrowser<ParamUserAccount>("account/create", paramUserAccount).Response; 
    var res = response2.Body.DeserializeJson<Result>(); 

    Assert.NotNull(res.Account.Id); 
    Assert.NotNull(res.Account.Name); 
} 

그래서 우리는 사용자, 전화 사용자 가입 끝점을 만든 다음 응답에서 PARAMS을 가지고 CREAT accoutn 엔드 포인트를 호출합니다. 이 접근법의 명백한 문제는 가입 엔드 포인트에서 변경을 수행하고 어떤 이유로 든 중단하는 경우 이와 같은 모든 테스트가 실패한다는 것입니다.

제 궁금한 점은 ... 올바른 접근 방법은 무엇입니까?

답변

0

당신은 단위 테스트가 아닌 통합 테스트입니다. 단위 테스트를 제대로 수행하려면 mocking 객체를 사용하여 db없이 테스트해야합니다.

+1

맞지만 답변은 매우 압축되어 있습니다. 이 지침에서 첫 번째 단계를 수행하는 방법 또는 적어도 유사한 질문에 연결하는 방법을 사용자에게 알려주십시오. –

관련 문제