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; },

            };
Другие вопросы по тегам