Def*_*ult 2 c# generics unit-testing rhino-mocks
是否可以嘲笑is操作员?在我的代码中,我有逻辑取决于它是什么类型的类,但值本身作为公共接口存储在类中.
基本上,我想要做的就是回到true通过定义模拟是的IValue,但返回true的is Value
public class Value : IValue
{
}
public interface IValue
{
}
public class Tester
{
public bool CheckIfValue(IValue value)
{
return value is Value;
}
}
[Test]
public void TestIfValue()
{
Tester tester = new Tester();
var value = MockRepository.GenerateStub<IValue>();
// can I add anything here which will make CheckIfValue return true?
bool isValue = tester.CheckIfValue(value);
Assert.That(isValue, Is.True);
}
Run Code Online (Sandbox Code Playgroud)
不可以"模拟" is运算符,is在以下情况下仅返回true:
你的设计很糟糕,IValue如果你真的需要它作为一个实例,你不应该要求Value.
关键在于依赖于抽象而不是实现,这就是为什么你IValue要开始使用接口的原因.Tester不应该关心,如果它得到Value,MockValue或其他任何东西,它应该只依赖于所定义的方法和属性IValue界面.
创建模拟的关键是Tester在特定场景中测试类的行为,模拟允许您指定对象Tester为该测试接收的行为,而不必创建大量的虚拟类,例如class FakeValueWhichDoes... : IValue为了测试它.
| 归档时间: |
|
| 查看次数: |
350 次 |
| 最近记录: |