爲了方便測試,我把一個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完美!謝謝! –