Как разрешить зависимость в интеграционном тесте Asp.Net MVC - PullRequest
0 голосов
/ 10 июля 2019

У меня нет большого опыта в интеграционных тестах, но я попытаюсь объяснить, что я пытаюсь сделать.

Я создал конечную точку, которая считывает данные из базы данных.

public class ProductController : Controller
{
    private IProductService _productService;

    public ProductController (IProductService productService)
        {
            _productService = productService;
        }

    [HttpGet]
    public IEnumerable<Product> GetProducts()
       {
          return _productService.GetAllProducts();
       }
}

public class ProductService: IProductService
{
    private IProductRepository _productRepository;

    public ProductService(IProductRepository productRepository)
        {
            _productRepository = productRepository;
        }

    public List<Product> GetAllProducts()
        {
            return _productRepository.GetProducts();
        }
 }

public class ProductRepository: IProductRepository
{
   public List<Product> GetProducts()
       {
            //database call to get products;
       }
}

Я разрешил зависимости для репозитория и других служб, используя SimpleInjectorDependencyResolver.

Теперь я создал проект модульного теста, в котором смоделировал ответ от службы.

[TestFixture]
public class ProductControllerTests
{
    private Mock<IProductService> _productService;

    private ProductController _productController;


    [SetUp]
    public void Setup()
    {
        _productService = new Mock<IProductService>();

        _productController= new ProductController(_productService.Object);
    }

}

это работает нормально.Я могу вернуть данные Mock.

для интеграционных тестов. Я создал отдельный проект, в котором я хочу получить доступ к хранилищу и получить реальные данные, но как я могу разрешить зависимости для IProductService в интеграционном тесте, чтобыЯ попаду в хранилище и смогу получить реальные данные из базы данных обратно.Как использовать внедрение зависимостей в интеграционном тесте для разрешения зависимостей.

public class ProductControllerIntegrationTests
{
    private ProductService _productService;

    private ProductController _productController;


    [SetUp]
    public void Setup()
       {
             // how to resolve the dependency for _productService
             _productController= new ProductController(_productService);
        }
 }
...