Dot*_*nfo 11 c# unit-testing moq mocking
我知道SetupSet是在Moq中设置属性的旧方法.现在它是obsolette但是我的intellisense显示两者都没有标记为Obsolette.谁能指出我们之间的实际区别?
Dot*_*nfo 18
我可能发现其中一个不同之处如下.
如果您尝试模拟Readonly属性,则必须使用SetupGet,因为在这种情况下SetupProperty不起作用.如果要设置期望,SetupProperty可用于非只读属性.
例如,下面不起作用
public interface IXyz
{
int Id { get; }
}
//Test Side Code
var _mock = new Mock<IXyz>();
_mock.SetupProperty(x => x.Id, 1054);
Run Code Online (Sandbox Code Playgroud)
如果你尝试执行上面的代码,它会出现System.ArgumentException:Property IXyz.Id是只读的
因此,如果您将代码更改为以下,它将起作用
_mock.SetupGet(x => x.Id).Returns(1054);
Run Code Online (Sandbox Code Playgroud)
Jef*_*ata 13
SetupSet未标记为已过时.您可能会想到ExpectSet,它被标记为已废弃,并显示消息"ExpectSet已重命名为SetupSet".
SetupSet 让您指出将要设置属性的期望:
mock.SetupSet(x => x.Prop = "bar").Verifiable();
mock.Object.Prop = "foo";
mock.Verify(); // fails
Run Code Online (Sandbox Code Playgroud)
SetupProperty看起来像是一种在mock上存根属性的方法(参见文档的相同部分SetupSet).
| 归档时间: |
|
| 查看次数: |
30785 次 |
| 最近记录: |