Передача mock-объектов конструктору

Я давно использую RhinoMocks, но только начал изучать Moq. У меня очень простая проблема, и меня удивляет, что она не вылетает сразу из коробки. Предположим, у меня есть следующее определение класса:

public class Foo
{
    private IBar _bar; 
    public Foo(IBar bar)
    {
        _bar = bar; 
    }
    ..
}

Теперь у меня есть тест, в котором мне нужно имитировать IBar, отправляемый в Foo. В RhinoMocks я бы просто сделал это, как показано ниже, и это сработало бы просто великолепно:

var mock = MockRepository.GenerateMock<IBar>(); 
var foo = new Foo(mock); 

Однако в Moq это, похоже, работает иначе. Я делаю следующее:

var mock = new Mock<IBar>(); 
var foo = new Foo(mock); 

Однако теперь это не удается - мне говорят: «Невозможно преобразовать из 'Moq.Mock' в 'IBar'. Что я делаю неправильно? Каков рекомендуемый способ сделать это с помощью Moq?

56
задан stiank81 10 August 2011 в 13:29
поделиться