Объявите свой метод как это:
public string InstantiateType<T>(string firstName, string lastName)
where T : IPerson, new()
Уведомление дополнительное ограничение в конце. Тогда создайте new
экземпляр в теле метода:
T obj = new T();
Одна особенность, которая мне очень нравится, - это возможность заглушить все экземпляры класса. Часто я делаю что-то вроде следующего с mocks RSpec:
stub_car = mock(Car)
stub_car.stub!(:speed).and_return(100)
Car.stub!(:new).and_return(stub_car)
с Mocha, который становится:
Car.any_instance.stubs(:speed).returns(100)
Я считаю версию Mocha более ясной и ясной.
Я использую мокко, потому что не использую rspec. Я использую test / unit, а test / unit не имеет встроенных заглушек и насмешек.
As far as I know Mocha supports Double Injections (aka Partial Mocking, which is also supported in rr), not sure that RSpec supports this feature too.
Also, for those who prefer to switch between testing frameworks, Mocha is a universal solution applicable for Test/Unit, Shoulda, etc. Using RSpec mocking with all these libs will be an overkill.