开发者

Is there any way to create a fake from a System.Type object in FakeItEasy?

开发者 https://www.devze.com 2023-03-18 04:17 出处:网络
Is there any way to create a fake from a System.Type object in FakeItEasy? Similar to: var instance = A.Fake(type);

Is there any way to create a fake from a System.Type object in FakeItEasy? Similar to:

var instance = A.Fake(type);

I try to write a fake container for AutoFac that automatically return fakes for all resolved types. I have looke开发者_如何学Pythond in the code for FakeItEasy and all methods that support this is behind internal classes but I have found the interface IFakeObjectContainer that looks pretty interesting, but the implementations still need registration of objects that is the thing that I want to come around.


As of FakeItEasy 2.1.0 (but do consider upgrading to the latest release for more features and better bugfixes), you can create a fake from a Type like so:

using FakeItEasy.Sdk;

…

object fake = Create.Fake(type);

If you must use an earlier release, you could use some reflection based approach to create a method info for the A.Fake() method. (since it's about auto mocking this shouldn't be a problem really).


This is best done using a registration handler. You should look into how AutofacContrib.Moq implements its MoqRegistrationHandler. You'll see that it is actually using the generic method MockRepository.Create to make fake instances. Creating a similar handler for FakeItEasy should be quite simple.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号