gpt4 book ai didi

fakeiteasy - 如何验证是否使用特定类型的参数调用了方法

转载 作者:行者123 更新时间:2023-12-03 22:23:51 26 4
gpt4 key购买 nike

我需要验证是否使用特定类型的对象调用了方法

这是我要测试它被调用的方法的接口(interface):

interface IPlayer
{
void Send(object message);
}

考试:
var player1 = A.Fake<IPlayer>();
room.AddPlayer(player1);

room.DoSomething();

A.CallTo(() => player1.Send(A<Type1>.Ignored)).MustHaveHappened();

因为有多次调用 player1.Send我得到了许多不同的对象 InvalidCastException
有人知道如何正确地做到这一点吗?

最佳答案

这是设计使然,您实际上要做的是:

A.CallTo(() => player1.Send(A<object>.That.IsInstanceOf(typeof(MessageType)))).MustHaveHappened();

A 中指定的类型应该始终是方法采用的确切参数类型。实际上,我确实考虑过更改它,以便您可以按照建议的方式限制类型,如果我没记错的话,主要原因(但我认为还有其他原因)是在引入重载的情况下它会更加脆弱。

例如,假设您在 IPlayer 接口(interface)上引入了以下重载:
interface IPlayer
{
void Send(object message);
void Send(Type1 message);
}

一旦你引入了这个重载,你的测试就会改变意义。

关于fakeiteasy - 如何验证是否使用特定类型的参数调用了方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11564528/

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