【发布时间】:2014-04-05 14:13:53
【问题描述】:
Moq 中有一个新语法,允许我使用从头开始创建模拟
var newMock = Mock.Of<IInterface>(m => m.GetSomeValue() == value);
有时我不会自己创建模拟(例如,使用 AutoData Theories 时)。然后我必须使用旧语法设置模拟
existingMock.Setup(m => m.GetSomeValue()).Returns(value);
我不喜欢这个有两个原因
- 可读性较差(恕我直言)
- 它迫使我混合使用新旧语法。
我更喜欢使用类似的东西来设置现有的模拟
existingMock.SetupUsingNewSyntax(m => m.GetSomeValue() == value);
- 这可能吗?
- 如果没有,是否在路线图上?
我会假设为现有的模拟引入新语法。 - 如果不是,我该如何自己实现?
我已经知道如何使用Mock.Get<>() 和Mock.Of<>(),以及模拟和模拟对象之间的关系。
Moq 也是迄今为止第一个也是唯一一个提供 Linq 的框架 模拟,以便可以实现更多相同的行为 简明扼要
由于现在有两种方法可以创建和设置新的 mock,旧的方法和新的 succint 方法,我希望它能够延续并包括设置 existing 模拟。
【问题讨论】:
-
您可以使用
Mock.Get<T>获取模拟实例。 -
是的,我知道。但我的问题是,我是否可以使用上面显示的 lambda 语法对其进行配置?
-
Mock.Of<T>创建一个新的模拟实例。它不适用于AutoMoqCustomization,因为它在内部为您创建了一个模拟实例,并且两个模拟实例将不相同。 -
是的,我明白了。我想知道是否有一种方法可以通过现有的模拟来使用这种不错的语法。或者也许可以用某种方式编写我自己的
Setup()方法来接受这种论点。 -
@NikosBaxevanis,也许我的问题的背景尚不清楚。我现在试图澄清它。
标签: c# unit-testing moq autofixture automoq