1
종속성이있는 서비스 메소드에 대한 단위 테스트를하고 있습니다. 간체 : 내가 원하는 것은 완전히 난 아직 내 테스트 중에 null 참조 예외로 실행 호출을 스텁 왜 _connection
멤버가 설정되어 있지 않기 때문에, 인, ConditionChecker.CanDoSomething
의 구현을 무시하는 것입니다Rhino 스텁을 사용한 UnitTest의 범위 제한
public class ConditionChecker
{
private SqlConnection _connection;
public bool CanDoSomething()
{
return _connection.State == ConnectionState.Open;
}
}
public class A
{
public ConditionChecker Checker { get; set; }
public bool CanInvokeA()
{
return Checker.CanDoSomething();
}
}
[TestClass]
public class ATests
{
[TestMethod]
public void TestCanInvokeA()
{
// arrange
A a = new A();
ConditionChecker checker = MockRepository.GenerateStub<ConditionChecker>();
checker.Stub(x => x.CanDoSomething()).Return(true);
a.Checker = checker;
// act
bool actual = a.CanInvokeA();
// assert
Assert.AreEqual(true, actual);
}
}
. 여기서 내가 뭘 잘못하고 있니?
이public virtual bool CanDoSomething()
{
}
장면 뒤에 때문에 코뿔소 모의가 ConditionChecker
의 동적 프록시를 만들 것이다, 그래서 당신은 코뿔소 모의 그것을 오버라이드 (override) 할 수 있도록 virtual
을 표시해야합니다
감사합니다. 따라서이 제한은 Castle.DynamicProxy에서 발생합니다. 맞습니까? –
@SebastianEdelmeier : correct :) –
아! 그리고 'ConditionChecker '의 생성자에 내가 바이 패스하기 원하는 코드가 있다면? 그건 불가능할 겁니다, 그렇죠? –