【问题标题】:Using the current object instance in a Moq callback在 Moq 回调中使用当前对象实例
【发布时间】:2013-08-12 10:44:29
【问题描述】:

我想使用具有函数 Foo 的 Moq 创建一个存根,该函数会将存根实例推送到作为参数传递的列表中。我可以使用Callback<>() 方法来捕获列表,但我无法从那里访问存根实例,对吗?

这是我目前得到的:

var stubPattern = new Mock<IBar>();
stubPattern.Setup(stub => stub.Foo(It.IsAny<List<IBar>>()))
    .Callback<List<IBar>>(list => list.Add(stubInstance); // stubInstance not valid

在起订量中可以做这样的事情吗?

【问题讨论】:

    标签: .net unit-testing mocking moq


    【解决方案1】:

    如果您要获取模拟实例本身,可以使用Object 属性。

    stubPattern.Setup(stub => stub.Foo(It.IsAny<List<IBar>>()))
               .Callback<List<IBar>>(list => list.Add(stubPattern.Object);
    

    【讨论】:

    • 哦!我天真地假设 Object 每次都创建一个新实例,而不是一遍又一遍地生成同一个实例。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多