Estoy tratando de tener las pruebas de la unidad no se basan en llamar al contenedor .Resolver <T>() para sus dependencias.A .NET Unidad de prueba sin un constructor sin parámetros, para facilitar la inyección de dependencia
Actualmente estoy usando autofac 2.2.4, y trató xUnit.NET y NUnit, pero ambos tienen este problema:
Sin constructor sin parámetros definidos para este objeto
¿Cómo puedo superar este problema? ¿Es un marco de prueba unitario particular que lo soportará, o simplemente cómo se configura dicho marco?
¿No debería estar haciendo esto? ¿O puedo configurar la clase de prueba para trabajar con el constructor que tiene su única dependencia?
Aquí es una parte del código:
public class ProductTests : BaseTest
{
readonly private IProductRepository _repo;
public ProductTests(IProductRepository r)
{
_repo = r;
}
//working unit tests here with default constructor
}
qué elegí para inicializar el contenedor erróneamente en el constructor de la clase base?
public abstract class BaseTest
{
protected BaseTest()
{
var builder = new ContainerBuilder();
builder.RegisterType<ProductRepository>().As<IProductRepository>();
builder.Build();
}
}
¿Por qué la clase de prueba necesita tener un constructor? Pon la "inyección" en el método de configuración. –