我正在尝试在我的项目asp.net核心中使用Testunit,但是我遇到了Mock错误,我的意思是,我无法实例化我的dbContext,我已经尝试了许多教程,但始终返回相同的错误:“ 城堡.DynamicProxy.InvalidProxyConstructorArgumentsException:'无法实例化类MyApp.Context.AppDbContext的代理。 找不到无参数的构造函数。'“
这是我的课堂模型:
public class Seguro
{
[Key]
public int Id { get; set; }
public string PlacaVeiculo { get; set; }
public string Endereco { get; set; }
public string CPF { get; set; }
public string TipoDeSeguro { get; set; }
public int TipoSeguroId { get; set; }
public virtual TipoSeguro TipoSeguro {get;set;}
}
我的环境:
public class AppDbContext: DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options)
: base(options)
{ }
public virtual DbSet<User> Usuario { get; set; }
public virtual DbSet<Seguro> Seguros { get; set; }
public virtual DbSet<TipoSeguro> Tipo { get; set; }
}
我的班级服务测试:
public class SeguroServiceTest
{
public AppDbContext _context;
public SeguroServiceTest(AppDbContext context)
{
_context = context;
}
public Seguro SalvarSeguro(Seguro seguro)
{
_context.Seguros.Add(seguro);
_context.SaveChanges();
return seguro;
}
}
最后完成我的测试班:
[TestMethod]
public void AdicionarSeguro()
{
var mockSet = new Mock<DbSet<Seguro>>();// my model class
var mockContext = new Mock<AppDbContext>();// my context
mockContext.Setup(x => x.Seguros).Returns(mockSet.Object);
SeguroServiceTest service = new SeguroServiceTest(mockContext.Object);// here return error
var seguro = new Seguro
{
CPF = "051.879.958-51",
Endereco = "Rua nacoes",
PlacaVeiculo = "RTF-6787",
TipoSeguroId = 1
};
service.SalvarSeguro(seguro);
mockSet.Verify(s => s.Add(It.IsAny<Seguro>()), Times.Once());
mockContext.Verify(s => s.SaveChanges(), Times.Once());
}