Исключение «Невозможно проверить на реальном объекте - используйте вместо этого поддельный объект» - PullRequest
0 голосов
/ 04 июля 2018

Я использую Typemock Isolator версии 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 голосов
/ 05 июля 2018

напишите свой тест так: `

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

   }

`

0 голосов
/ 04 июля 2018

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.
...