【发布时间】:2018-02-01 15:41:28
【问题描述】:
我在 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);
}
据我所知,它应该可以正常工作而不会引发任何异常。但事实是,“Connection”属性永远不会返回应由 Rhino Mocks 存根的已声明 SqlConnection。有人知道我错过了什么吗?
【问题讨论】:
-
测试失败的原因是什么?
-
对不起,如果我的问题不够清楚,感谢您的帮助。问题是来自属性“Connection”的 Get 方法没有被 Rhino Mocks 存根。因此,它首先引发 NullReferenceException。并且在调试测试并尝试通过观察列表评估属性时,它会引发一个异常,告诉我 get_Connection 没有实现。但是我检查了 Rhino Mocks 文档,他们告诉我们这样做: stub.Stub(x => x.Connection).Return(new SqlConnection());再次感谢您!
标签: c# rhino-mocks