Тест NUnit конструктора не выполнен из-за отсутствия параметра - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь запустить модульный тест с использованием NUnit и поэтому следовал учебному пособию, в котором говорится следующее:

[TestFixture]
public class TestFootballplayerController
{
    [Test]
    public void FootBallPlayer_CheckingIfControllerReturnsCorrectView_MustReturnTrue()
    {
        string expected = "CreatePlayer";
        FootballplayerController controller = new FootballPlayerController();

        var result = controller.CreateIngredient() as ViewResult;

        Assert.AreEqual(expected, result.ViewName);
    }
}

В учебном пособии предполагается, что у меня есть пустой конструктор по умолчанию, но мой конструктор содержит параметрс моим DBContext следующим образом:

    public class FootballplayerController : Controller
{
    private readonly FootballContext _context;

    public FootballplayerController(FootballContext context)
    {
        _context = context;
    }

    public IActionResult CreatePlayer()
    {
        return View();
    }
}

Visual Studio предлагает мне создать пустой конструктор, но таким образом я думаю, что я просто протестирую что-то, что не должно быть протестировано, вместо правильного конструктора спараметр.

Если ответ очевиден, то я должен сказать, что я новичок в модульном тестировании и не могу обойти это.Нужно ли подделывать параметр?

1 Ответ

0 голосов
/ 23 ноября 2018

В этом случае вы можете просто смоделировать этот класс, используя, например, MoQ framework

[Test]
public void FootBallPlayer_CheckingIfControllerReturnsCorrectView_MustReturnTrue()
{
    string expected = "CreatePlayer";
    var mock = new Mock<FootballContext>();
    FootballplayerController controller = new FootballPlayerController(mock.Object);

    var result = controller.CreateIngredient() as ViewResult;

    Assert.AreEqual(expected, result.ViewName);
}

, но вы должны помнить, что теперь это просто пустой класс в этом тесте.Вы можете создать лучший макет, высмеивая все ваши DbSets, и сделайте их IQueryable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...