设置用于单元测试的类的可读属性



我有一个像这样的接口

public interface IConnection
{
    Strategy Gc { get; }
    bool IsConnected();
    bool Connect();
}

我想单位使用此接口的类测试方法。现在,我想设置GC,但恰好是阅读的。有没有一种方法可以在不更改此接口类的情况下设置GC字段?我正在使用MS Fakes和Nsubstitute进行单位测试。但是,显然没有一个提供解决方案。 PrivateObject也不起作用。

更改接口不是一个选项。建议更好的解决方案。

使用NSubstitute,这很容易。首先为您的接口创建模拟:

var mock = Substitute.For<IConnection>();

现在,您可以通过为属性设置任何返回型型嘲笑成员:

mock.Gc.Returns(Substitute.For<Strategy>());

最终根据该实例提供了该模拟的实例作为服务的参数,例如:

var target = new MyClassToTest();
target.DoSomething(mock);  // mock is an instance of IConnection

现在,每当您的方法被称为时,它都会返回Strategy的假期。当然,您还可以在Returns陈述中设置任何其他任意返回类型。只需查看http://nsubstitute.github.io/help/set-return-value以获取更多信息即可。

最新更新