이미 존재하는 객체를 기반으로 mock 객체를 만드는 방법이 있습니까? 예를 들어 ASP.NET MVC 응용 프로그램을 단위 테스트 할 때 저장소 방법을 조롱하는 문제 (예 : GetAll
)가 자주 발생합니다. 보통 나는 다음과 같이 몇 가지 테스트 데이터를 반환하기 위해이 방법을 얻으려면 :이미 존재하는 객체의 일부를 조롱 할 수 있습니까?
private List<Country> CreateCountries()
{
return new List<Country> {
new Country("Australia", "AU", "AUS"),
new Country("Canada", "CA", "CAN"),
...
};
}
내 기업이 모든는 Id 속성을 가진 PersistedEntity
기본 클래스에서 파생 객체 있지만 그렇게 할 때, NHibernate에 의해 설정 될 수있다 Idle = 0 인이 객체들을 처음부터 만듭니다. 이것은 단위 테스트에서 문제가되는데, 그 이유는 컨트롤러가 ID가 모두 0으로 설정된 비현실적인 엔티티 목록을 제공하기 때문입니다.
ID를 설정할 수 있기를 정말로 바랍니다. 이런 일을해서이 물건들에.
new Country("United States", "US", "USA").SetID<Country>(3); *
코뿔소 모의 객체에서 그런 마법이 있다면
public static T SetID<T>(this T entity, int id) where T : PersistedEntity
{
var mocks = Mocker.Current;
// Some kind of magic happens here that creates a mocked version of
// entity (entity2), which has the same values as the original entity
// object but allows us to set up new expectations on it like...
Expect.Call(entity2.Id).Return(id);
return entity2;
}
누구나 알고 SetID
이 PersistedEntity
에 확장 방법이 될 것입니다
?
*이 방법을 일반적으로 만들 필요가 있다고 생각하지만 그렇지 않은 경우 더 좋습니다.