【问题标题】:"Cannot verify on real object - use a fake object instead" exception“无法验证真实对象 - 改用假对象”异常
【发布时间】:2018-12-12 18:27:11
【问题描述】:

我正在使用 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());
}

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

【问题讨论】:

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


    【解决方案1】:

    这样写你的测试: `

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

    `

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多