c# - 在最小起订量中模拟虚拟成员

标签 c# moq

对于单元测试,我使用的是 NUnit 2.6 和 Moq 4.0。有一个关于虚拟成员的特殊情况,其中 Moq 的代理对象不会将方法调用中继到实际实现(可能是设计使然)。例如,如果我有一个类...

public class MyClass {
    protected virtual void A() {
        /* ... */
    }

    protected virtual void B(...) {
        /* ... */
    }
}

...我使用 Moq 在我的测试夹具中覆盖 GetSomethingElseA() 方法...

var mock = new Mock<MyClass>();
mock.Protected().Setup("A").Callback(SomeSortOfCallback);

...使用 mock 的 A 方法效果很好;但是,如果所述方法中的任何内容调用非模拟方法 B,则该方法将不执行任何操作和/或返回默认值,即使 MyClass 中存在实际实现也是如此。

有没有办法解决这个问题?我是否使用了 Moq 错误?

提前致谢,
曼尼

最佳答案

设置 mock.CallBase = true 就可以了。

关于c# - 在最小起订量中模拟虚拟成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11391150/

相关文章:

c# - 如何在 C# 中调用 protected 构造函数?

c# - 获取以度为单位的角度?

c# - HashSet<T>.CreateSetComparer() 无法指定 IEqualityComparer<T>,是否有替代方案?

unit-testing - 将单元测试用例的 Private 方法更改为 Public 是一个很好的做法

c# - Moq.Mock<T> 使用 MOQ 将表达式设置为 Mock 会导致模拟设置不匹配

c# - Moq 中 "Verify"方法的奇怪行为

c# - 在 C# 中通过 COM Interop 编码字符串时编码失败(双 UTF8 编码?)

c# - winform进度条运行期间执行代码

c# - 模拟方法执行时间和顺序

c# - 在 C# 中模拟局部变量