我正在写我的ASP。NET Core Web API,我想开始用XUnit编写单元测试(我知道,现在有点晚了,但是,嘿,晚一点总比没有好),但我这里有一些复杂的依赖注入。这是我的样本
控制器
课程:
public class UnitController : MyController {
private readonly MyContext _context;
public UnitController(MyContext context) {
_context = context;
}
}
和
MyContext
课程:
public class MyContext : DbContext {
private readonly IHttpContextAccessor _httpContext;
public MyContext(DbContextOptions options, IHttpContextAccessor httpContext) : base(options) {
_httpContext = httpContext;
}
}
还有我的
配置服务
方法
创业。反恐精英
:
public void ConfigureServices(IServiceCollection services) {
services.AddDbContext<MyContext>(options => options.UseMySql(Configuration.GetConnectionString("MyContext"))
.ConfigureWarnings(warnings => warnings.Ignore(RelationalEventId.QueryClientEvaluationWarning)));
services.AddHttpContextAccessor();
services.AddMvc();
}
还有我可怜的XUnit班:
public class UnitControllerTest {
private readonly MyContext _context;
public UnitControllerTest() {
var configuration = new Mock<IConfiguration>().Object;
var dbOptions = new DbContextOptionsBuilder().UseMySql(configuration.GetConnectionString("MyContext"));
_context = new Mock<MyContext>(dbOptions).Object;
}
[Fact]
public void AddUnit_InvalidModel_ShouldReturnBadRequest() {
var controller = new UnitController(_context);
var testUnit = new Unit();
var result = controller.AddUnit(testUnit);
Assert.Equal(typeof(BadRequestObjectResult), result.GetType());
}
}
我的问题是,
如何正确编写测试?