代码之家  ›  专栏  ›  技术社区  ›  RationalGeek

SetupSet()已过时。代替什么?

  •  55
  • RationalGeek  · 技术社区  · 14 年前

    假设我想使用Moq在setter上创建一个回调,将set属性存储在我自己的字段中以供以后使用(我可以这样做:

    myMock.SetupSet(x => x.MyProperty).Callback(value => myLocalVariable = value);
    

    而且效果很好。但是,根据Intellisense,SetupSet是过时的。但它并没有说应该用什么作为替代。我知道moq提供了SetupProperty,它将用一个backing字段自动连接属性。但那不是我要找的。我想把设定值捕获到我自己的变量中。我应该如何使用非过时的方法来实现这一点?

    1 回复  |  直到 13 年前
        1
  •  103
  •   Sinister Beard    9 年前

    我使用的是Moq版本3.0.204.1和 SetupSet 对我来说没有标记为过时。然而,有几个 设置集 过载位于 MockLegacyExtensions . 你可以避免使用这些 设置集 定义在 Mock 班级。

    Action<T> 作为 设置集 Func<T, TProperty> .

    下面的调用将调用未弃用的重载:

    myMock.SetupSet(p => p.MyProperty = It.IsAny<string>()).Callback<string>(value => myLocalVariable = value);
    

    诀窍是使用 It.IsAny<string>