C# moq不返回我在mock.Setup中定义的内容

C# moq不返回我在mock.Setup中定义的内容,c#,moq,C#,Moq,我在用Moq模拟c#中的一个函数 public void Mapper_GetProductMappingTest() { //Arrange: Mapping mapping= new Mapping() { code = "AB" }; Mapper mapper = new Mapper(new MongoStore()); CaseProduct caseP

我在用Moq模拟c#中的一个函数

 public void Mapper_GetProductMappingTest()
    {
        //Arrange:
        Mapping mapping= new Mapping()
        {
            code = "AB"
        };
        Mapper mapper = new Mapper(new MongoStore());

        CaseProduct caseProduct = new CaseProduct()
        {
            ProductID = "ABC",

        };
        Mock<Mapper> mock = new Mock<Mapper>(new MongoStore());
        mock.Setup(x => x.GetMapping(caseProduct)).Returns(mapping);
        // why does it return the caseproduct not the mapping?!
        var mapped = mock.Object.GetMapping(caseProduct);
        Assert.IsTrue(mapped.code == "AB");
public void映射器_GetProductMappingTest()
{
//安排:
映射映射=新映射()
{
code=“AB”
};
Mapper Mapper=new Mapper(new MongoStore());
CaseProduct CaseProduct=新CaseProduct()
{
ProductID=“ABC”,
};
Mock Mock=new Mock(new MongoStore());
mock.Setup(x=>x.GetMapping(caseProduct)).Returns(mapping);
//为什么它返回caseproduct而不是映射?!
var-mapped=mock.Object.GetMapping(caseProduct);
Assert.IsTrue(mapped.code==“AB”);
此Assert.IsTrue失败,mock.Object.GetMapping(caseProduct)返回ABC而不是AB。
有人能帮我吗?

Mapper.GetMapping是否有
virtual
修饰符?另外,请尝试if
mock.Setup(x=>x.GetMapping(It.IsAny())。返回(映射)
的工作方式与您预期的一样。它将匹配任何对GetMapping的调用,因此应该可以工作,我们将查看您的代码或Moq是否有问题。是的,它是虚拟的,并且我尝试了mock.Setup(x=>x.GetMapping(It.IsAny())。返回(mapping)仍然有相同的问题。这很奇怪。你还有其他建议吗?我得到的错误是找不到ProductID。我的Moq版本是4.2.1408.717。在这个版本中,
mock
工作正常,并返回假
映射
对象。