Я делаю net core rest api
приложение, в котором я хочу использовать xunit
для его проверки.
У меня есть интерфейс с именем IContact с простым методом и класс Concrete с именем Contact
public interface IContact
{
int Get();
}
public class Contact: IContact
{
public int Get()
{
return 10;
}
}
В файле startup.cs я определил это ...
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IContact, Contact>();
}
Я использую контроллер значений по умолчанию, как это
public class ValuesController : ControllerBase
{
private IContact _contact;
public ValuesController(IContact contact)
{
_contact = contact;
}
[HttpGet]
public void Get()
{
int aa = _contact.Get();
}
}
У меня есть проект xunit, где я использую Moq для вызова метода Get () ()
public class UnitTest1
{
ValuesController _controller;
public UnitTest1()
{
Mock<IContact> mockRepo = new Mock<IContact>();
_controller = new ValuesController(mockRepo.Object);
}
[Fact]
public void Test1()
{
_controller.Get();
}
}
Я запускаю этот тест в режиме отладки и при достижении строки
int aa = _contact.Get();
У меня проблема в том, что он не вступает в Get()
метод из Contact
класса. Возвращает 0;
Чего мне не хватает?
Где я могу установить интерфейс IContact должен вызывать класс Contact, как я определил в startup.cs?