我在CSharp项目中有以下接口和类:
namespace FakeLib
{
public class Child : IChild
{
public DbConnection Connection { get; }
}
public interface IChild
{
DbConnection Connection { get; }
}
public class Parent
{
public IChild item { get; set; }
public string Run()
{
return item.Connection.Database;
}
}
}
所以我创建了以下UnitTest方法:
[TestMethod]
public void TestMethod1()
{
var repository = new MockRepository();
var stub = repository.Stub<FakeLib.IChild>();
stub.Stub(x => x.Connection).Return(new SqlConnection());
var pai = new FakeLib.Parent() { item = stub };
var conn = stub.Connection;
Assert.IsNotNull(conn);
}
据我所知,它应该可以在不引发任何异常的情况下工作。但事实是&#34;连接&#34;属性永远不会返回应该由Rhino Mocks存根的声明的SqlConnection。有谁知道我错过了什么?
答案 0 :(得分:1)
在尝试了很多不同的方法之后,我终于找到了这个奇怪问题的根源:
替换此代码:
var repository = new MockRepository();
var stub = repository.Stub<FakeLib.IChild>();
这一个
var stub = Rhino.Mocks.MockRepository.GenerateStub<FakeLib.IChild>();
解决了这个问题。它很奇怪,因为存根工作正常,除了只读属性,就是这种情况。似乎Rhino使用不同但含糊不清的sintax来实现不同的目标。 谢谢大家的帮助