我是JustMock嘲笑框架的新手,我試圖嘲笑一種私人方法。我完全意識到單元測試私有方法通常是不好的做法,但在這種情況下,我別無選擇。我一直在看官方文件(http://www.telerik.com/help/justmock/advanced-usage-mocking-non-public-members-and-types.html),但似乎沒有任何工作。JustMock:嘲弄私人方法
這裏是我的示例代碼:
using System;
using Telerik.JustMock;
public class Program
{
public class Foo
{
public void useA()
{
a();
}
private void a()
{
Console.WriteLine("AAAAAAAAAAAAAAA");
}
}
public static void Main()
{
var mockeClass = Mock.Create<Foo>(Behavior.CallOriginal);
Mock.NonPublic.Arrange(mockeClass, "a").DoInstead(() => Console.WriteLine("Mock success!!!"));
mockeClass.useA();
}
}
這裏是錯誤日誌:
Run-time exception (line 21): The type initializer for 'Telerik.JustMock.Core.Context.MockingContext' threw an exception.
Stack Trace:
[System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
[System.TypeInitializationException: The type initializer for 'Telerik.JustMock.Core.Context.MockingContext' threw an exception.]
at Program.Main(): line 21
我只是困惑,爲什麼它不工作。
如果你別無選擇,只能測試一個私有方法,那麼該方法可能不應該是私有的。考慮將方法提取到可以直接測試的自己的類中,而不是通過測試其調用者。 – Kritner
問題是我要測試的代碼結構非常糟糕。我無能爲力。我有另一種情況是私有方法返回一個值影響我正在測試的方法的邏輯。這就是爲什麼我需要嘲笑它。 @Kritner –