c# - "Cannot verify on real object - use a fake object instead"异常

标签 c# unit-testing mocking typemock typemock-isolator

我使用的是 Typemock Isolator 8.6.2.0 版。 我有以下类(class):

public class A
{
    public B b { get; }

    public A()
    {
        b = new B();
    }
}

public class B
{
    public B()
    {
        Console.WriteLine("In B c'tor");
    }
    public void doSomething()
    {

    }
}

测试方法是:

public void test()
{
    Isolate.Fake.NextInstance<B>();
    A a = new A();
    var bObject = a.b;
    bObject.doSomething();
    Isolate.Verify.WasCalledWithAnyArguments(() => bObject.doSomething());
}

当我运行测试时,出现以下异常:“无法在真实对象上验证 - 请改用伪造对象”,但对象伪造的! 有谁知道它为什么会发生以及我该如何解决?

最佳答案

像这样写你的测试: `

   public void test()
   {
       var fake = Isolate.Fake.NextInstance<B>();
       A a = new A();
       var bObject = a.b;
       bObject.doSomething();
       Isolate.Verify.WasCalledWithAnyArguments(() => fake.doSomething());

   }

`

关于c# - "Cannot verify on real object - use a fake object instead"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51171534/

相关文章:

c# - 使用 Span<T> 替代 Substring

java - 使用 Mockito 测试父类(super class)方法

unit-testing - 如何使用相互依赖的接口(interface)方法模拟结构

unit-testing - Zend Framework 2 & PHPUnit - 模拟 Zend\Db\Adapter\Adapter 类

c# - 更快地查明用户是否存在于系统中的方法?

javascript - 在编译时检查 javascript/typescript 对象是否对应于 C# 对象

c# - 为什么取消父任务时不会触发子任务的任务继续?

java - 编写仅适用于测试类中特定测试的 Mock 方法

java - HSQL数据库偶尔会执行两次schema.sql

javascript - 将测试 ID 添加到单元测试以进行报告