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

Fakeiteasy 如何验证是否使用特定类型的参数调用了方法,fakeiteasy,Fakeiteasy,我需要验证是否使用特定类型的对象调用了方法 这是我要测试调用的方法的接口: interface IPlayer { void Send(object message); } 测试: var player1 = A.Fake<IPlayer>(); room.AddPlayer(player1); room.DoSomething(); A.CallTo(() => player1.Send(A<Type1>.Ignored)).MustHaveHappe

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

这是我要测试调用的方法的接口:

interface IPlayer
{
   void Send(object message);
}
测试:

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

room.DoSomething();

A.CallTo(() => player1.Send(A<Type1>.Ignored)).MustHaveHappened();
var player1=A.Fake();
房间。添加播放器(播放器1);
房间,房间,房间;
A.CallTo(()=>player1.Send(A.Ignored)).musthaveOccessed();
由于有多个调用
player1.Send
和许多不同的对象,我得到了
InvalidCastException


有人知道如何正确地做到这一点吗?

这是出于设计,实际上,您要做的是:

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

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

你这样做很好,我想应该会有类似的东西,只是在维基上找不到
interface IPlayer
{
   void Send(object message);
   void Send(Type1 message);
}