2013-10-23 2 views
1

내 코드를 테스트하려고합니다. Hibernate의 Criteria와 함께 동작하는 모듈의 기능을 테스트 할 필요가있다. 예를 들어 여기에 내 단위 테스트 중 하나가 있습니다. 그것은 SimpleExpression를 반환하고 나는 expression.PropertyName 및 expression.Value를 확인할 수 있기 때문에 NHibernate의 제한을 테스트하려면 어떻게해야합니까?

[Fact] 
public void test_name() 
{ 
    var criteria = ... // creates mock criteria 
    MyModule.DoWork(criteria); // adds restrictions to criteria 

    Assert.True(/* check if criteria.Add() was called 
    and what arguments were passed */); 
} 

MyModule.DoWork()가 Restrictions.Eq을 (추가하는 경우

)는, 아무런 문제가 없습니다. 그러나 대신 Restrictions.Not (Restrictions.Eq()) (AbstractCriterion을 반환 함)를 추가하면 PropertyName 및 Value를 확인할 방법이 없습니다.

그런 경우 어떻게해야합니까? 제한에 대한 테스트 방법. 그렇지 않습니까?

답변

1

사용자 수의 예제 테스트 ToString() 결과에 대한 당신의 AbstractCriterion 어쨌든

(중첩 된 개인 _criterionNotExpression해야한다), 나는 좋은 아이디어로 표시되지 않습니다. 여기서 주제가 아닐지 모르지만 그 구조 나 결과보다는 ToString()의 결과를 테스트하는 것이 좋습니다. 요점은 (IMHO) 코드가하는 것, 목표 데이터 구조에 대한 지식에 대한 적합성 이상입니다.

메모리 내 데이터베이스 (SqlLite가 마음에 듭니다)를 설치하고 테스트 집합에 제한을 적용하여 테스트하는 것이 더 좋을 것 같습니다. 그리고 그것은 NH 검사 방법의 일부분과 비슷합니다. https://github.com/nhibernate/nhibernate-core/blob/master/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs

관련 문제