Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用XUnit编写一个简单的测试用例?_C#_Unit Testing_Moq_Asp.net Core 1.0_Xunit.net - Fatal编程技术网

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上下文以允许更大的灵活性。