es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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 = new 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.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando simular la clase BaseBLL en tu proyecto de prueba. El error que obtienes se debe a que ConfigurationManager.ConnectionStrings["dbConnection"] está devolviendo null.

    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
    Mock _mockConfig = new 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 clase CustomerBLL.

    ¡Espero que esto ayude!

Comments are closed.