“无法在真实对象上进行验证-改用假对象”异常

时间:2018-07-04 10:30:39

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

我正在使用Typemock隔离器8.6.2.0版本。 我有以下课程:

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());
}

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

2 个答案:

答案 0 :(得分:3)

NextInstance返回一个可以调用Verify的句柄。现在,您将返回的手柄扔掉了。

根据http://www.typemock.com/docs/?book=Isolator&page=Documentation%2FHtmlDocs%2Ffakingfutureinstances.htm上的文档

Verifying is done on the instance returned from Isolate.Fake.NextInstance.

答案 1 :(得分:3)

这样编写测试: `

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

   }

`