构造函数的NUnit测试由于缺少参数而失败

时间:2018-11-21 16:13:06

标签: c# asp.net-mvc unit-testing testing nunit

我正在尝试使用NUnit运行单元测试,因此遵循了一个说明以下内容的教程:

<input>

本教程假定我有一个空的默认构造函数,但是我的构造函数包含一个带有DBContext的参数,如下所示:

[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);
    }
}

Visual Studio建议我创建一个空的构造函数,但以这种方式,我认为我将只测试一些不应进行测试的东西,而不是带有参数的正确构造函数。

如果答案很明显,那么我必须说,我是单元测试的新手,无法解决此问题。我必须伪造参数吗?

1 个答案:

答案 0 :(得分:0)

在这种情况下,您可以使用MoQ框架来模拟此类

[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);
}

,但您必须记住,此测试现在只是空类。您可以通过模拟所有DbSet并使它们成为IQueryable来创建更好的模拟。