C# 如何使用XUnit编写一个简单的测试用例?
全新的测试,我有一个这样的控制器:C# 如何使用XUnit编写一个简单的测试用例?,c#,unit-testing,moq,asp.net-core-1.0,xunit.net,C#,Unit Testing,Moq,Asp.net Core 1.0,Xunit.net,全新的测试,我有一个这样的控制器: public class CheckRegController : Controller { private readonly ApplicationDbContext _context; private readonly AppSettings _appSettings; public CheckRegController(ApplicationDbContext context, IOptions<AppSettings&g
public class CheckRegController : Controller
{
private readonly ApplicationDbContext _context;
private readonly AppSettings _appSettings;
public CheckRegController(ApplicationDbContext context, IOptions<AppSettings> appSettings)
{
_context = context;
_appSettings = appSettings.Value;
}
[HttpGet]
public IActionResult Get(string var1, int numberusers)
{
//...
}
}
它说:
没有给出与所需的形式化参数相对应的参数
的参数“上下文”
'CheckRegController.CheckRegController(ApplicationDbContext,
IOOptions)“XUnitTestProjectOA”
然后我试着:
CheckRegController cr = new CheckRegController();
var moqHome = new Mock<ApplicationDbContext>();
var moqHome=new Mock();
但我不知道这是正确的还是错误的,或者我需要在未来做些什么?
如何通过
\u context
和\u appsettings
?您走在正确的轨道上。模拟依赖项并将它们注入测试对象中
//Arrange
var dbmock = new Mock<ApplicationDbContext>();
//...setup dbmock as needed to exercise test
var options = new Mock<IOption<AppSetting>();
var appSetting = new AppSetting {
//...populate appSetting as needed to exercise test
};
options.Setup(_ => _.Value).Returns(appSetting);
var sut = new CheckRegController(dbMock.Object, options.Object);
var var1 = "testing";
var numberusers = 2;
//Act
var actual = sut.Get(var1,numberusers)
//Assert
//...assert expected behavior to actual.
//排列
var dbmock=new Mock();
//…根据需要设置dbmock以执行测试
var options=new Mock u.Value)。返回(appSetting);
var sut=新的CheckRegController(dbMock.Object,options.Object);
var var1=“测试”;
var numberusers=2;
//表演
var-actual=sut.Get(var1,numberusers)
//断言
//…将预期行为断言为实际行为。
我还建议抽象掉上下文,使控制器更易于维护。这正是我想要的……但在UnitTestProject中,我们使用[TestMethod]属性,通过单击测试用例,我们可以运行任何测试用例,但在XUnitTestCase中,我有[Fact]属性,无法运行测试用例?如何运行它?我正在使用命令:dotnet测试方法namespace.projectname.methodname?但它不起作用。它在dbmock.object-Castle.DynamicProxy.InvalidProxyConstructorArgumentsException上给了我一个错误:'不能实例化类的代理:abc.Data.ApplicationDbContext.?@Mogli这就是为什么我建议抽象db上下文以允许更大的灵活性。