Linq To SQL 코드의 단위 테스트를 설정하려고합니다. 내 코드는 System.Data.Linq.Table 클래스 (디자이너가 생성)를 사용합니다.Typemock은 Linq To SQL Table 클래스를 모의 할 수있는 유일한 프레임 워크입니까?
이 클래스는 봉인되었고 생성자는 내부이므로 완전히 impervious to unit testing frameworks like Rhino Mocks입니다. (당신이 저장소 패턴을 사용하도록 코드를 변경하고 싶지 않다면, 나는 그렇지 않을 것입니다.)
Typemock은 (어떤 방법으로)이 클래스를 모의 할 수 있습니다. (예를 들어, here을 참조하십시오.)
그러나 Typemock은 라이센스가 $ 800입니다. 나는 곧 고용주가 그 일로 떠오르는 것을 보지 못한다.
그래서 여기에 질문이 있습니다. 모의 객체를 만들기 위해 인터페이스에 의존하지 않는 다른 모조 프레임 워크가 있습니까?
편집 : 코드의 예 내가 시험에 필요
public class UserDAL : IUserDAL
{
private IDataClassesDataContext _ctx;
public UserDAL()
{
string env = ConfigurationManager.AppSettings["Environment"];
string connectionString = ConfigurationManager
.ConnectionStrings[env].ConnectionString;
_ctx = new DataClassesDataContext(connectionString);
}
public UserDAL(IDataClassesDataContext context)
{
_ctx = context;
}
public List<User> GetUsersByOrganization(int organizationId)
{
IOrderedQueryable<User> vUsers =
(from myUsers in _ctx.Users
where myUsers.Organization == organizationId
orderby myUsers.LastName
select myUsers);
return vUsers.ToList();
}
public bool IsUserInOrganization(User user, int orgainzationID)
{
// Do some Dal Related logic here.
return GetUsersByOrganization(orgainzationID).Contains(user);
}
}
나는 쉽게 읽을 수 있도록이를 단락있다. 아이디어는 내가 몇 가지 코드를 가지고있다 (A LINQ 쿼리를 수행 다른 방법을 (GetUsersByOrganization
을 같은)를 호출 IsUserInOrganization
을있다.
I는 단위 테스트 IsUserInOrganization
방법을하고 싶습니다. 내가 _ctx.Users을 조롱 할 필요가 있음을합니까 . - 종속 관계가에있는 경우
1) 플랫폼을 테스트하지 마십시오 : 두 개의 표준 단위 테스트가이 경우에 접근 테이블 클래스 (즉 밀봉 내부 생성자가있다)
두 노트 : 1. 테스트 IsUserInOrganization은 일반적으로 통합 테스트를 제외하고 GetUsersByOrganization 테스트를 분리해야한다; 그들은 같은 일을하지 않습니다. GetUsersByOrganization 테스트에는 일반적으로 IsUserInOrganization의 특정 사용 범위가 포함됩니다. IsUserInOrganization 메서드에 몇 가지 추가 코드가 없으면 GetUsersByOrganization 테스트가 관련 사례를 포함해야하므로이 메서드를 테스트 할 이유가 없습니다. 기본적으로이 경우에는 잘못된 것으로 테스트하고 싶습니다. –
하나가 다른 하나를 호출합니다. 그것을 다른 수업으로 내 보내서 다른 학생에게 전화하지 않고 어떻게 시험 할 수 있습니까? – Vaccano
수 없습니다. 사실 그것은 코드 냄새입니다. –