Измените свой конструктор на это.
private Helper _h;
private ProductsContext _productsContext;
public ProductController(Helper h, ProductsContext productsContext)
{
_h = h;
_productsContext = productsContext;
}
У вас было две ошибки.
В
using (var context = new ProductsContext())
вы создаете новый ProductsContext
в своем коде;даже в вашем тесте, который является плохой практикой, потому что вы тоже не хотите тестировать зависимости.
И в вашем конструкторе вы делаете
public ProductController(Helper h)
{
Helper _h = h;
}
, что не то, что вам нужносделать.Вы хотите установить переменную _h = h;
и не создавать новую (которая недоступна вне конструктора, что означает, что в вашем методе SingleProduct
ваша переменная _h
не установлена должным образом.
Последнее, ноне в последнюю очередь вы не должны возвращать It.IsAny<Product>()
в своем макете. Верните новый экземпляр. Или для теста просто null
.
Еще один совет: вы используете ProductsContext
только в вашем Helper
.Было бы разумно удалить его из ProductController
и добавить его к вашему ProductsContext
в конструкторе, как я предлагал сделать с Helper
в ProductsController
, потому что вашему ProductsController
теперь не нужно ProductsContext
на все.