Resharper挑战:使用.Mock()。Return()而不是setter,反之亦然

时间:2012-07-06 03:23:43

标签: visual-studio resharper rhino-mocks

我经常遇到一个与Rhino Mocks强制你使用setter的方式有关的问题,而不是嘲笑(反之亦然)。

例如:

var foo = MockRepository.GenerateStub<IFoo>();

// Valid only if Bar has a setter (of course, otherwise it wouldn't compile)
foo.Bar = new Bar(); 

// Valid only if Bar does not have a setter (less obvious, as this will compile)
foo.Stub(x => x.Bar).Return(new Bar());

处理这些问题可能会非常麻烦,尤其是在进行重构时。

所以我的问题是,有人能想出一个自定义Resharper / Visual Studio快捷方式的好方法,可以让我快速地从一个转换到另一个吗?

1 个答案:

答案 0 :(得分:1)

回答我自己的问题 - 自定义检查模式可以帮助解决这个问题。

搜索模式是: $ object $。$ property $ = $ value $;

替换模式是: $ object $ .Stub(x =&gt; x。$ property $)。返回($ value $);

$ object $和$ value $都是表达式占位符,$ property $是标识符占位符。

不幸的是,因为它作为代码检查始终可见,导致整个代码库出现绿色波形。