1
테스트 클래스에 대한 모의 저장소를 초기화하는 일반적인 방법을 찾으려고합니다. 내가 여러 저장소를 가지고 있기 때문에 제네릭을 사용하여 그것을 시도했다.제네릭을 사용하여 조롱 된 저장소를 초기화하는 더 좋은 방법이 있습니까?
public interface IRepository<T> where T: class
{
IQueryable<T> GetAll();
}
내 정적 초기화 방법은 다음과 같습니다 :이 아니다
Mock<IRepository<Link>> linkRepository = UnitTestHelpers.GetRepository<IRepository<Link>, Link>(new[] {
new Link { LinkId = 1, Title = "Title 1", Created = DateTime.Now, Url = "http://google.com" },
new Link { LinkId = 1, Title = "Title 2", Created = DateTime.Now, Url = "http://google.com" },
new Link { LinkId = 1, Title = "Title 3", Created = DateTime.Now, Url = "http://google.com" }
});
내 기분이 :
public static Mock<T> GetRepository<T, TK>(params TK[] items) where T: class, IRepository<TK> where TK: class
{
Mock<T> mock = new Mock<T>();
mock.Setup(m => m.GetAll()).Returns(items.ToList().AsQueryable);
return mock;
}
은 내가 사용하는 코드에서 내 저장소를 초기화하려면 나는 일반적인 저장소 인터페이스가 GetRepository 메서드에서 Link를 두 번 지정해야하므로이 작업을 수행하는 가장 우아한 방법입니다. 이 작업을 더 멋지게/깨끗하게 할 수 있습니까?
도움 주셔서 감사합니다. 나는 이것을 내일 시도 할 것이다. 반복 가능한 테스트에 대한 조언도 감사드립니다. – b3n
@ b3n np. 행운? – vidstige
죄송합니다. 직장에서 너무 바빴으니 주말에 다시 방문해야합니다. 너에게 알려 줄거야. – b3n