Тест NUnit - Как настроить закрытый метод, вызываемый внутри метода publi c, для возврата указанного значения c? - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь проверить следующий метод GetNumber publi c, используя NUnit.

public GetNumber()
{
   var numberOfUsers = GetNumberOfUsers();
   var number = numberOfUsers + 1;

  return number;
}  

Чтобы полностью его протестировать, мне нужен закрытый метод GetNumberOfUsers для возврата указанного значения c во время выполнения теста, например, 0 или 1. Как я могу настроить свой тест таким образом, чтобы GetNumberOfUsers возвращал значения, которые я хочу?

Лог c теста будет выглядеть примерно так:

[Test]
public void GetNumberTest()
{

   //setup GetNumberOfUsers so that it returns 0

   var result = object.GetNumber();

   Assert.AreEqual(1, result);

}

1 Ответ

1 голос
/ 10 марта 2020

Вы не можете. Вы должны стремиться проверить свой интерфейс publi c. Вы не предоставили достаточно подробных сведений о том, откуда GetNumberOfUsers получает его результат, из-за которого трудно найти оптимальное решение. Вы можете сделать GetNumberOfUsers защищенными и переопределить его в подклассе. например,

public class MyClass
{
  public int GetNumbers()
  {
    var numberOfUsers = GetNumberOfUsers();
  }

  protected virtual GetNumberOfUsers()
  { // implementation } 
}

public class MyClassImplForTesting : MyClass
{
  public int NumberOfUsers {get; set;} = 10;
  protected overrides GetNumberOfUsers()
  {
    return NumberOfUsers;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...