gpt4 book ai didi

c# - 尝试将 Mock 用于泛型时,Moq 出现奇怪问题

转载 作者:太空狗 更新时间:2023-10-30 01:25:07 30 4
gpt4 key购买 nike

一些代码:

public interface IMyInterface
{
int GetIt();
}

public class MyImplementation : IMyInterface
{
public int GetIt()
{
return 10;
}
}

[Test]
public void Testit()
{
Method<MyImplementation>();
}

private void Method<T>()
where T : class , IMyInterface
{
var mock = new Mock<T>();
mock.Setup(m => m.GetIt()).Returns(() =>
{
return 40;
});

Assert.AreEqual(40, mock.Object.GetIt());
}

请注意,在更新 Mock 时我使用的是泛型 T,但是由于 T 被限制为引用类型并且属于 IMyInterface 类型,因此我可以毫无问题地设置方法。但出于某种原因,它总是失败,并调用 MyImplementation 的实际实现而不是 Mocked 实现。

最佳答案

您实际上是在模拟一个类方法,为此该方法必须是虚拟的。

尝试

public class MyImplementation : IMyInterface
{
public virtual int GetIt()
{
return 10;
}
}

关于c# - 尝试将 Mock<T> 用于泛型时,Moq 出现奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7663511/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com