1
我正在为具有依赖关系的服务方法进行单元测试。简化:使用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);
}
}
我想是完全绕过的ConditionChecker.CanDoSomething
实施,这就是为什么我存根电话,还是我我的测试过程中运行到一个空引用异常,因为_connection
成员未设置。我在这里做错了什么?
谢谢,所以这个限制来自Castle.DynamicProxy,对吧? – 2013-04-22 09:39:07
@ SebastianEdelmeier:正确:) – 2013-04-22 09:39:26
啊!如果'ConditionChecker'的构造函数包含我想绕过的代码呢?那是不可能的,不是吗? – 2013-04-22 09:44:52