2010-01-30 5 views

답변

3

나는 두 가지 전략이 서로 다른 두 가지라고 말하고 싶습니다. 자신이 말했듯이, in-memory db를 사용하면 리포지토리도 테스트 할 수 있지만, 리포지토리를 먼저 테스트하여 관심사를 분리해야합니다. 시스템을 설계 할 때 MVC에 따라 컨트롤러를 모델/리포지토리보다 먼저 설치해야합니다. 먼저 뭘하고 싶은지 결정해야하고 이후에 어떤 엔티티가 협업을 통해 목표를 달성 할 것인지 결정해야하기 때문입니다. 따라서 콘트롤러를 만들고 조롱하는 것이 더 좋은 방법입니다. 나중에 설치가 정말 쉬운 경우에는 메모리 내 데이터베이스를 사용하여 저장소를 테스트 할 수 있습니다.

+0

네, 맞습니다. 그것은 서로 다른 목표를 성취하는 데 사용되는 여러 가지 것들입니다. – jimmystormig

2

내 전략은 내 비즈니스 코드를 테스트 할 때 저장소를 조롱합니다. 저장소를 테스트 할 때 데이터 액세스 계층을 조롱했습니다. 필자는 가능한 한 많은 데이터 액세스 레이어 (LINQ-to-SQL)에 대해 자동 생성 코드를 사용하므로 테스트 할 부분이별로 없습니다. 무엇이 있는지 (유효성 검사 물건, 전문적인 속성 처리), 보통 mock없이 직접 테스트 할 수 있습니다. 절대적으로 필요하다면 (또는 더 쉬울 때) 필자는 때때로 목록에 내장 된 사용자 정의 메모리 내장 저장소를 사용하여 데이터 계층을 가짜로 만들 것입니다. 여기에 대한 내용은 http://farm-fresh-code.blogspot.com의 블로그를 참조하십시오.

3

ORM을 사용하는 경우 일반적으로 mocks 및 예상 결과를 설정하는 오버 헤드가 없으므로 메모리 데이터베이스에 sqlite를 사용하여 응용 프로그램을 테스트하는 경향이 있습니다. 더미 데이터베이스를 사용하는 것보다 속도가 빠르지 만 모의 (mock)를 사용하는 것보다 빠르다는 것은 기대하지 않습니다. SQL 어댑터를 사용했다면 아마도 모의 (mock)를 사용하게 될 것입니다. 그렇지 않으면 호출을 다시 작성해야 할 것입니다.

관련 문제