无法模拟用于返回的多次调用的方法

约格什

我正在尝试模拟一个方法,该方法需要两个参数int和out of bool。我能够在第一次调用时正确设置它,它会返回正确的输出值和返回值。但是,当第二次尝试调用相同的方法时,它不是在调用我的委托。知道这里有什么问题吗:

我试过的

mock.GetRows(Arg.Is<int>(10), out moreRows).Returns(x =>
    {
        if (first)
        {
            first = false;
            x[1] = true;
            return new object[][] { new object[] { null, "Collêction Namê" }, new object[] { null, "Collêction Name" }, new object[] { null, "COllection Name" } };
        }
        else
        {
            x[1] = false;
            return new object[][] { new object[] { collectionId, "Collection Name" } };
        }
    });

我也尝试过这个:

mock.GetRows(Arg.Is<int>(10), out moreRows).Returns(
    x =>
    {
        first = false;
        x[1] = true;
        return new object[][] { new object[] { null, "Collêction Namê" }, new object[] { null, "Collêction Name" }, new object[] { null, "COllection Name" } };
    },
    x=>
    {
       x[1] = false;
       return new object[][] { new object[] { collectionId, "Collection Name" } };
    });

但是,这可行:

.ReturnsForAnyArgs(x =>
    {
        if (first)
        {
            first = false;
            x[1] = true;
            return new object[][] { new object[] { null, "Collêction Namê" }, new object[] { null, "Collêction Name" }, new object[] { null, "COllection Name" } };
        }
        else
        {
            x[1] = false;
            return new object[][] { new object[] { collectionId, "Collection Name" } };
        }
    });
大卫·切帕克(David Tchepak)

模拟out参数的问题在于该值会更改每个调用,因此最初存根的调用Returns不再匹配。

你已经正确识别使用的解决办法ReturnsForAnyArgs,因为在这个答案描述

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

验证方法在返回的模拟中被调用

来自分类Dev

如何模拟其他方法内部的方法调用返回

来自分类Dev

仅根据spock的调用次数模拟出方法的返回

来自分类Dev

Mockito模拟所有方法调用并返回

来自分类Dev

调用模拟对象的方法时如何验证返回值

来自分类Dev

Mockito-每次调用方法时返回模拟对象

来自分类Dev

无法从实例名称调用返回的方法

来自分类Dev

无法为方法返回的UIImage *调用:drawAtPoint

来自分类Dev

无法从实例名称调用返回的方法

来自分类Dev

无法在 Laravel 中调用返回 VIEW 的方法

来自分类Dev

如何使PHPUnit模拟无法调用未配置的方法?

来自分类Dev

PHPunit模拟-在返回的模拟中调用函数

来自分类Dev

Moq-无法模拟类属性的方法返回值

来自分类Dev

使用minitest在模拟上多次调用同一方法

来自分类Dev

多次调用异步方法

来自分类Dev

loadview方法被多次调用

来自分类Dev

多次调用异步方法

来自分类Dev

静态方法的多次调用

来自分类Dev

使用list参数作为返回值多次调用void方法要优于返回List的方法?

来自分类Dev

未调用模拟方法

来自分类Dev

返回属性的模拟方法

来自分类Dev

无法正确模拟方法

来自分类Dev

无法模拟方法

来自分类Dev

如何在不运行方法的情况下模拟方法调用并返回值?

来自分类Dev

模拟将方法调用返回到另一个对象的方法

来自分类Dev

如何模拟调用其他方法而没有返回值的方法

来自分类Dev

如何模拟模拟对象的方法调用?

来自分类Dev

如何避免在用于记录的字符串中模拟对象的方法调用?

来自分类Dev

如何使模拟方法返回相同的模拟