J'essaie de faire en sorte que les tests unitaires ne reposent pas sur l'appel de container.Resolve < T () pour leurs dépendances.Un test d'unité .NET sans constructeur sans paramètre, pour faciliter l'injection de dépendances
J'utilise actuellement AutoFac 2.2.4, et essayé xUnit.NET et NUnit, mais les deux ont cette question:
Aucun constructeur défini parameterless pour cet objet
Comment puis-je résoudre ce problème? S'agit-il d'un cadre de test unitaire particulier qui le supportera, ou simplement de la configuration de ce cadre?
Est-ce que je ne devrais pas faire cela? Ou puis-je configurer la classe de test pour travailler avec le constructeur qui a sa seule dépendance?
est ici une partie du code:
public class ProductTests : BaseTest
{
readonly private IProductRepository _repo;
public ProductTests(IProductRepository r)
{
_repo = r;
}
//working unit tests here with default constructor
}
Ai-je choisi pour initialiser le conteneur à tort dans le constructeur de la classe de base?
public abstract class BaseTest
{
protected BaseTest()
{
var builder = new ContainerBuilder();
builder.RegisterType<ProductRepository>().As<IProductRepository>();
builder.Build();
}
}
Pourquoi la classe de test a-t-elle besoin d'un constructeur? Mettez le "injection" dans la méthode de configuration. –