在动作列表中分配值?

时间:2013-12-03 07:22:15

标签: c# generics nunit

我的测试类中有一个空值错误

[Test]
    public void when_send_the_command_it_execute_correct_command_handler()
    {
        //Arrange
        var commandBus = new CommandBus();
        ICommand commandforsend=null;
        IMetaData metaDataforsend=null;

        Action<ICommand, IMetaData> fakeHandler = (fakecommand, fakemetadata) =>
        {
            commandforsend = fakecommand;
            metaDataforsend = fakemetadata;
        };

commandforsend和metaDataforsend值仍然为null 怎么会发生什么?帮帮我谢谢你!

2 个答案:

答案 0 :(得分:2)

您正在定义Action,但您永远不会调用它。您的代码等同于分配值但您不调用的单独方法,因此方法中的代码永远不会运行。

如果要执行fakeHandler,则应在声明下方添加以下行:

fakeHandler(aFakeCommand, aFakeMetadata);`

如您所见,这与调用常规方法相同。您需要为两个参数(fakecommandfakemetadata)提供值。

您可以在MSDN documentation.

中找到更多信息

答案 1 :(得分:1)

由于您的代码没有执行fakeHandler,这种行为是可以的,因为您刚刚声明了一个匿名方法而没有执行它。