У меня нет большого опыта в интеграционных тестах, но я попытаюсь объяснить, что я пытаюсь сделать.
Я создал конечную точку, которая считывает данные из базы данных.
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);
}
}