2012-07-11 4 views
0

이전에 Rails에서 개발했습니다. 필자는 테스트 작성이 매우 쉽다는 것을 발견했으며, 최근 MVC .NET이 우리의 주요 제품에 사용되는 프로젝트로 옮겼습니다.MVC .NET에서 내 모델에 대한 테스트 작성 방법 (레일 배경에서)

MVC .NET으로 작업하는 방법을 알았지 만 모델에 단위 테스트를 작성하는 방법을 잘 모르고 있습니다. 내가 테스트를위한 별도의 데이터베이스를 제공 레일을 사용하고 있기 때문에

describe "user.name_is_newton?" 

    context "user's name is newton" do 
    before :each do 
     @user = User.create(:name => "newton") 
    end 

    it { @user.name_is_newton?.should be_true } 
    end  
end 

내가 열심히 전환 발견하고 그 이유는 : 나는 레일 내 단위 테스트를 작성 할 방법에 대한 정말 빠른 더러운 예를 줄 것이다. 그것은 (분명히) 현장에서 테스트 데이터베이스에 사용자 항목을 생성하고 테스트를 작성하는 것을 매우 쉽게 만듭니다. MVC .NET에서 비슷한 테스트를 작성하는 방법을 잘 모르겠습니다. 어떤 도움을 주셔서 감사합니다! 감사!

답변

0
당신은 일반적으로 당신이 IEnumerable을 < [기업]에 작용하는 방법을 테스트> 또는되도록 모든 단위 테스트에 대한 데이터베이스 작업,하지만 시도하고 리팩토링 할 싶지 않을 것이다 MVC에서

된 IQueryable < [단체] > 또는 심지어 Entity 자체 일 수도 있습니다. 그런 식으로 당신의 부대는 가능한 한 일반적인 '일'으로 일하고 있습니다. 하지만 아마 내가 아는 것들을 말하고있을거야.

더 복잡한 개체를 사용해야하는 경우 조롱하거나 다시 인터페이스를 사용하도록 리팩토링하고 인터페이스를 조롱해야합니다.

저는 HttpContextBase, HtmlHelper, HttpResponseBase, DbSet 및 ShouldEqual과 같은 도우미와 같은 유용한 MVC 모의 객체 라이브러리를 보유하고 있습니다. 너무 길어 불필요하게 여기에 붙여 넣기는하지만 물어 보면 행복하게 제공 할 것입니다. 그들은 Moq를 사용합니다.

MOQ이있을 수 있습니다 사용하는 위의 예 :

방법을 테스트 :

public User CreateUser(string name) 
{ 
    return new User { Name = name }; 
} 

단위 테스트 :

[Test] 
public void CreateUser_NameIsNewton() 
{ 
    var user = CreateUser("Newton"); 
    Assert.AreEqual(user.Name, "Newton"); 
} 
+0

이가 바보 같은 질문이 될 수도 있지만, 대상 사용자가 무엇을? 데이터베이스에있는 엔티티입니까? 사용자를 조롱합니까? – Karan

+0

@steveowen MVC mock은 어디에서 가져 왔습니까? 직접 쓰거나 온라인으로 찾으셨습니까? 어떻게 생겼는지 몇 가지 예를보고 싶습니다. – Dty

+0

@Newton "User"는 사용자가 만든 모델입니다. 데이터베이스의 엔티티 일 수도 있고 표시 목적으로 사용하는 자체 모델 일 수도 있습니다. (프리젠 테이션 업무를 위해 데이터베이스 모델을 사용하지 않는 것이 가장 좋습니다.) –

관련 문제