假設在MVC5控制器中,我的控制器中有一個方法被控制器中的其他方法調用,但我不希望它可供用戶使用。如果我希望能夠嘲笑它,它應該是這樣的:單元測試dotnet核心控制器中的非公開方法
[ChildActionOnly]
public virtual string DoSpecialFormatting(string mySpecialString)
{
// stuff
}
或者我可以扔[assembly: InternalsVisibleTo("MyLittleProject.Tests")]
和[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
(用於MOQ)爲AssemblyInfo.cs
和標記方法爲internal
,而不是public
:
internal virtual string DoSpecialFormatting(string mySpecialString)
{
// stuff
}
既然沒有ChildActionOnly
,我在新建的ASP.NET Core項目中看不到AssemblyInfo.cs
文件,我該如何在我的控制器類中使用Web用戶無法訪問但仍然可以被模擬的方法?
您可以做的一種方式是,將所有內部邏輯放在共享框架項目中,然後使用InternalsVisibleTo作爲您的測試項目。 – Prashant