У меня есть следующая проблема с AutoFixture, описанная в коде
public SUT(IConcrete concrete)
{
DTO BuildDTO()
{
return new DTO
{
URL = concrete.GetString(arg1, arg2);
};
}
}
public Concrete : IConcrete
{
public Concrete(ISomeHandler someHandler)
{
...
}
public GetString(obj arg1, obj arg2)
{
return someHandler.GetUri(arg1, arg2);
}
}
public void Test(
[Frozen] Mock<ISomeHandler> someHandler,
SUT mySUT)
{
someHandler.Setup(...);
mySUT.DoStuff();
//assert everything went as expected
}
Моя проблема просто в том, как мне зарегистрировать IConcrete с помощью AutoFixture таким образом, чтобы я мог получить доступ к замороженному макету, который должен быть введен в него в тестовом примере?
На самом деле речь идет о внедрении HttpRequestMessage в преобразователь URL-адресов, который используется в обработчике, вызываемом из контроллера в проекте веб-API.
Я попытался зарегистрировать IConcrete с помощью созданного макета autofixture.
fixture.Register<IConcrete>(new Mock<ISomeHandler>());
но тогда я не могу получить доступ к этому макету в модульном тесте и настроить возвращаемое значение.
Заранее спасибо за любую помощь :)
SUT
зависит отIConcrete
, то зачем вообще заботиться оISomeHandler
? - person Mark Seemann   schedule 14.07.2016SUT
иISomeHandler
. - person Mark Seemann   schedule 15.07.2016SUT
иISomeHandler
. - person Jesper Bangsholt   schedule 15.07.2016SUT
по-прежнему не взаимодействует сISomeHandler
. Он вызываетIConcrete.GetString
. Вам нужно только предоставить тестового двойника дляIConcrete
. - person Mark Seemann   schedule 15.07.2016