Доступ к значению времени выполнения для свойства во время теста FakeItEasy - PullRequest
0 голосов
/ 21 апреля 2020

Мы используем FakeItEasy для наших модульных тестов. У меня есть method1, который возвращает значение для одного свойства, одновременно обновляя его другим значением property2 во время выполнения.

Мне нужно получить обновленное значение для property2 во время моего теста. Но он не возвращает Обновленное значение, он всегда возвращает значение по умолчанию / начальное значение. Если я оберну этот метод1 в другой метод2 (это единственная цель, чтобы вернуть Обновленное значение) - я смогу получить то, что мне нужно, но код уродлив, потому что я создаю новый метод для одиночного тестирования.

Как я могу передать Обновленное значение, сохраняя при этом мой код чистым?

Вот мой код.

public class MyClass1
{

  public int Property3 = 0;

  public MyClass1()
  {
  }

  public virtual async Task<(Guid Property1, string Property2)> MyMethodOne (SendEmailMessageRequest request)
  {
     // Does something here
     property3++;

     return (request.Property1, request.Property2);
  }
}

Вот мой тест:

MyClass1 Sut => new MyClass1(); 

[Test]
        public void when_property3()
        {
            var fakeSendEmailMessageRequest = A.Fake<SendEmailMessageRequest>();

            (Guid Property1, string Property2) response;
            Action act = () => response = Sut.MyMethodOne(fakeSendEmailMessageRequest).ConfigureAwait(false).GetAwaiter().GetResult();

            act.Invoke();
            var rtr = Sup.Property3;
            rtr.Should().Be(1);
        }

1 Ответ

1 голос
/ 21 апреля 2020

Попробуйте инициализировать SUT перед каждым выполнением теста в программе установки (я предполагаю, что вы используете NUnit здесь):

[SetUp]
public void Init()
{
    Sut = new MyClass1();
}
...