我Moq用来模拟一些界面.这里是:
var titleGenerator = new Mock<ITitleGenerator>();
titleGenerator.Setup(t => t.GenerateTitle()).Returns(Guid.NewGuid().ToString);
Console.WriteLine(titleGenerator.Object.GenerateTitle());
Console.WriteLine(titleGenerator.Object.GenerateTitle());
Run Code Online (Sandbox Code Playgroud)
它打印两次相同的值.但如果我用这个替换第二行:
titleGenerator.Setup(t => t.GenerateTitle()).Returns(() => Guid.NewGuid().ToString());
Run Code Online (Sandbox Code Playgroud)
它会在每次调用时返回唯一值.
我一直以为方法组只是lambda表达式的快捷方式.有什么区别吗?我试着在文档中搜索任何解释.有人可以开导我吗?
它看起来像方法组一次评估表达式并以某种方式缓存它?或者它有什么关系Moq?
在第一个示例中,您将传递ToString单个函数Guid,然后在每次调用时调用它.它相当于:
Guid guid = Guid.NewGuid();
titleGenerator.Setup(t => t.GenerateTitle()).Returns(guid.ToString)
Run Code Online (Sandbox Code Playgroud)
在第二个示例中,您将传递一个函数,该函数首先创建一个新函数,Guid然后ToString()在其上调用.
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |