为了方便测试,我把一个Resharper source template来快速创建与NSubstitute一类的替代品。ReSharper的源模板添加空语句
[SourceTemplate]
public static void substitute<T>(this T o,
[Macro(Expression = "guessExpectedType()", Editable = -1)] string type)
where T : class
{
//$ o = Substitute.For<$type$>();
}
假设一个字段,private ILogger logger;
已定义,这让我键入logger.sub
(ReSharper的从那里表明完全法名),以产生logger = Substitute.For<ILogger>();
。
我仍然有两个问题我一直没能搞清楚。
1)有时它把替换代码之前空语句,即
;
logger = Substitute.For<ILogger>();
这似乎每当有替换线以下语句发生。然后,Resharper会建议可以删除空的语句。为什么这是一开始就添加的,我怎样才能防止它呢?
2)如果NSubstitute已经被导入类(using NSubstitute;
),它只能正确猜测替代类型。没有它,我得到logger = Substitute.For<object>();
和建议进口NSubstitute。是否有更好的宏表达式来解决字段类型?或者,有没有办法让它导入名称空间,如果它尚未被导入?
解决问题2完美!谢谢! –