我正在尝试使用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建议我创建一个空的构造函数,但以这种方式,我认为我将只测试一些不应进行测试的东西,而不是带有参数的正确构造函数。
如果答案很明显,那么我必须说,我是单元测试的新手,无法解决此问题。我必须伪造参数吗?
答案 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来创建更好的模拟。