MS Fakes, передавая параметр в конструктор
У меня есть следующий конкретный класс
public class Service
{
private IRepository _rep;
public Service(IRepository rep)
{
_rep() = rep;
}
public Boolean Foo(Int32 param1)
{
_rep.Foo(param1);
}
public void Bar()
{
_rep.Bar();
}
}
Я создал следующую прокладку для этого.
using (ShimsContext.Create())
{
ShimService shimService = new ShimService()
{
FooInt32 = (param1) => { return true; },
};
}
Я хочу, чтобы foo всегда возвращала истину. Это работает.
Я хочу, чтобы Бар работал нормально. Это не работает
Когда я отлаживаю _rep, значение NULL, поэтому я считаю, что мне нужно передать этот IRepository в конструктор Shims, но я не могу понять, как это сделать.
1 ответ
Я нашел решение. Вы должны создать экземпляр Сервиса, который вы хотите использовать в Shim, который включает внедрение IRepository, и передать этот сервис в Shim.....
IRepository rep = new Repository();
Service service = new Service(rep);
ShimSignOffService shimService = new ShimSignOffService(service)
{
IsBookmarkProcessedInt32 = (bookmarkId) => { return true; },
};