我正在尝试使用InternalsVisibleTo
assembly属性使我的单元测试项目可以看到.NET类库中的内部类.出于某种原因,我不断收到一条错误消息:
由于其保护级别,"MyClassName"无法访问
两个程序集都已签名,并且我在属性声明中列出了正确的密钥.有任何想法吗?
我想GetValue
使用Moq 仅模拟以下类的方法:
public class MyClass
{
public virtual void MyMethod()
{
int value = GetValue();
Console.WriteLine("ORIGINAL MyMethod: " + value);
}
internal virtual int GetValue()
{
Console.WriteLine("ORIGINAL GetValue");
return 10;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了一下这应该如何与Moq一起使用.我在网上找到的解决方案是使用该CallBase
属性,但这对我不起作用.
这是我的测试:
[Test]
public void TestMyClass()
{
var my = new Mock<MyClass> { CallBase = true };
my.Setup(mock => mock.GetValue()).Callback(() => Console.WriteLine("MOCKED GetValue")).Returns(999);
my.Object.MyMethod();
my.VerifyAll();
}
Run Code Online (Sandbox Code Playgroud)
我希望Moq使用现有的实现MyMethod
并调用mocked方法,从而产生以下输出:
ORIGINAL MyMethod: 999
MOCKED GetValue
Run Code Online (Sandbox Code Playgroud)
但这就是我得到的:
ORIGINAL GetValue
ORIGINAL MyMethod: 10
Run Code Online (Sandbox Code Playgroud)
然后
Moq.MockVerificationException : The …
Run Code Online (Sandbox Code Playgroud)