相关疑难解决方法(0)

InternalsVisibleTo属性不起作用

我正在尝试使用InternalsVisibleToassembly属性使我的单元测试项目可以看到.NET类库中的内部类.出于某种原因,我不断收到一条错误消息:

由于其保护级别,"MyClassName"无法访问

两个程序集都已签名,并且我在属性声明中列出了正确的密钥.有任何想法吗?

.net attributes internalsvisibleto

70
推荐指数
8
解决办法
5万
查看次数

用Moq对类进行部分嘲弄

我想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)

.net c# moq mocking

11
推荐指数
1
解决办法
1万
查看次数

标签 统计

.net ×2

attributes ×1

c# ×1

internalsvisibleto ×1

mocking ×1

moq ×1