dfe*_*aro 31 tdd unit-testing moq mocking
我怎么能在Moq做到这一点?
Foo bar = new Foo();
Fake(bar.PrivateGetter).Return('whatever value')
Run Code Online (Sandbox Code Playgroud)
我似乎只能找到如何模拟通过框架创建的对象.我想在我创建的具体对象上只模拟一个方法/属性.
在TypeMock中,我会这样做Isolate.WhenCalled(bar.PrivateGetter).Returns('whatever value').
有任何想法吗?
Ari*_*sky 53
您应该使用Moq创建Mock对象并将CallBase属性设置为true以使用对象行为.
从Moq文档:CallBase定义为"如果没有期望覆盖成员,则调用基类实现.这被称为"部分模拟".它允许模拟一个类的某些部分,而不必模拟一切.
示例代码:
[Test]
public void FailintgTest()
{
var mock = new Moq.Mock<MyClass>();
mock.Setup(m => m.Number).Returns(4);
var testObject = mock.Object;
Assert.That(testObject.Number, Is.EqualTo(4));
Assert.That(testObject.Name, Is.EqualTo("MyClass"));
}
[Test]
public void OKTest()
{
var mock = new Moq.Mock<MyClass>();
mock.Setup(m => m.Number).Returns(4);
mock.CallBase = true;
var testObject = mock.Object;
Assert.That(testObject.Number, Is.EqualTo(4));
Assert.That(testObject.Name, Is.EqualTo("MyClass"));
}
public class MyClass
{
public virtual string Name { get { return "MyClass"; } }
public virtual int Number { get { return 2; } }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28817 次 |
| 最近记录: |