'Moq: Invalid callback. Setup on method with parameters cannot invoke callback with parameters

I am trying to use Moq to write a unit test. Here is my unit test code:

var sender = new Mock<ICommandSender>();
sender.Setup(m => m.SendCommand(It.IsAny<MyCommand>(), false))
      .Callback(delegate(object o)
      {
          var msg = o as MyCommand;
          Assert.AreEqual(cmd.Id, msg.Id);
          Assert.AreEqual(cmd.Name, msg.Name);
      })
      .Verifiable();

SendCommand takes an object and optional boolean parameter. And MyCommand derives from ICommand.

void SendCommand(ICommand commands, bool idFromContent = false);

When the test runs, I see the error

System.ArgumentException : Invalid callback. Setup on method with parameters (ICommand,Boolean) cannot invoke callback with parameters (Object).

I want to check if the content of the message is what I sent in. I searched the forum and found a couple of different variations of this issue, but those didn't help. Any help is greatly appreciated.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source