我有以下具体课程
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始终返回true。这很有效。
我希望Bar正常运作。这不起作用。
当我调试_rep为null时,我相信我需要将这个IRepository传递给Shims构造函数,但我无法弄清楚如何去做。
答案 0 :(得分:1)
我找到了解决方案。你必须创建一个你想要Shim的服务实例,其中包括注入IRepository并将该服务传递给Shim .....所以
IRepository rep = new Repository();
Service service = new Service(rep);
ShimSignOffService shimService = new ShimSignOffService(service)
{
IsBookmarkProcessedInt32 = (bookmarkId) => { return true; },
};