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

Visual studio Resharper挑战:使用.Mock().Return()而不是setter,反之亦然,visual-studio,resharper,rhino-mocks,Visual Studio,Resharper,Rhino Mocks,我经常遇到一个问题,就是Rhino Mock迫使您在setter可用时使用setter,而不是mock(反之亦然) 例如: 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

我经常遇到一个问题,就是Rhino Mock迫使您在setter可用时使用setter,而不是mock(反之亦然)

例如:

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());
var foo=MockRepository.GenerateStub();
//仅当Bar具有setter时才有效(当然,否则它将无法编译)
foo.Bar=新的Bar();
//仅当Bar没有setter时有效(不太明显,因为这将编译)
Stub(x=>x.Bar).Return(newbar());
处理这些问题真的很麻烦,尤其是在进行重构时


所以我的问题是,有谁能想出一个好方法来定制一个Resharper/Visual Studio快捷方式,使我能够快速地从一个转换到另一个?

回答我自己的问题-自定义检查模式可以帮助实现这一点

搜索模式为: $object$.$property$=$value$

替换模式为: $object$.Stub(x=>x.$property$).Return($value$)

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


不幸的是,由于这是一种代码检查,因此它始终可见,导致整个代码库中出现绿色扭曲。

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

搜索模式为: $object$.$property$=$value$

替换模式为: $object$.Stub(x=>x.$property$).Return($value$)

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


不幸的是,由于这是一种代码检查,因此它始终可见,导致整个代码库中出现绿色的波形。

是的,但是您不能使用快捷方式执行它。啊,当然。你能把它设为提示吗(所以你只能得到最微弱的虚线下划线)?是的,这就是我所做的-当我想使用它时,很容易把它设为“提示”,当我不再需要它时,再把它设回“不显示”。是的,但是你不能用快捷方式执行它。啊,当然。你能把它设为提示吗(所以你只能得到最微弱的虚线下划线)?是的,这就是我所做的-当我想使用它时,很容易把它设为“提示”,当我不再需要它时,再把它设回“不显示”。