Proyecto de Capas Empresariales Falsas en .NET.
Estoy enfrentando un problema para simular la capa empresarial en mi proyecto de prueba. El proyecto es estable y no utiliza patrones modernos como (DI, IoC, etc.), sin embargo, la aplicación utiliza conceptos comunes de POO (herencia, creación de objetos, etc.). Entonces, en mi caso de proyecto, tengo el siguiente escenario.
0) Proyecto de prueba xUnit
1) Proyecto de CustomerBLL
2) Proyecto BaseBLL (que es una referencia del proyecto BLL)
Vea el siguiente diagrama para obtener más claridad.
Por favor, echa un vistazo al siguiente código que estoy usando para el testeo y lo que está mal en él, y hágame saber cuál es la mejor manera de simular la clase BaseBLL.
Lib: BaseBLL -> Clase
public class BaseBLL
{
public string _connectionString = "";
public BaseBLL()
{
_connectionString = ConfigurationManager.ConnectionStrings["dbConnection"].ToString());
}
}
Lib: CustomerBLL -> CustomerClass
public class CustomerBLL : BaseBLL
{
public string CustomerDetails(string id)
{
return "data";
}
}
Proyecto de prueba
public class CustomerUnitTest
{
[Fact]
public void GetCustomerDetailsNagativeTest()
{
// CONFIGURACIÓN
Mock
_mockConfig.Setup(x => x.ConnectionString).Returns(“DB-Connection”);
BaseBLL baseBll = new BaseBLL(_mockConfig.Object.ConnectionString);
var _customerBLL = new Mock<CustomerBLL>
{
CallBase = false
};
// ACT
_customerBLL.Setup<string>(x => x.CustomerDetails("-1")).Returns("0");
// ASEGURAR
Assert.Equal("0", _customerBLL.Object.CustomerDetails("-1"));
}
}
Por favor, indíqueme cómo seguir el enfoque correcto para probar esto, en mi caso, estoy obteniendo el siguiente error:
Al realizar la afirmación, recibo el error:
System.NullReferenceException: ‘Referencia a objeto no establecida como instancia de un objeto.’ System.Configuration.ConnectionStringSettingsCollection.this[string].get devolvió nulo.
davy.ai
Parece que estás intentando simular la clase
BaseBLL
en tu proyecto de prueba. El error que obtienes se debe a queConfigurationManager.ConnectionStrings["dbConnection"]
está devolviendonull
.Puedes intentar simular
ConfigurationManager.ConnectionStrings["dbConnection"]
en tu proyecto de prueba. Puedes usar una biblioteca como Moq para hacer esto.Por ejemplo, puedes usar el siguiente código para simular
ConfigurationManager.ConnectionStrings["dbConnection"]
:csharp _mockConfig = new Mock ();
Mock
_mockConfig.Setup(x => x.ConnectionString).Returns("DB-Connection");
BaseBLL baseBll = new BaseBLL(_mockConfig.Object.ConnectionString);
Luego puedes usar el objeto
baseBll
para probar la claseCustomerBLL
.¡Espero que esto ayude!