如何测试行动<…>是零

本文关键字:是零 何测试 测试 | 更新日期: 2023-09-27 18:14:22

假设我有一个这样的函数:

public void DoSomething(Action<object> something)
{
    something(getObject());
}

如果something为空,则此代码将引发NullReferenceException。

然而,something == null不会编译,那么我如何测试something来找出它是否为空?

如何测试行动<…>是零

您应该能够直接针对null进行测试。这个编译得很好:

public void DoSomething(Action<object> something)
{
    if (something == null) // Note that there are no () on something
    {
        throw new ArgumentNullException("something");
    }
    something(GetObject()); // Assumes `GetObject()` method is available on class, etc
}
if(something == null)
{
    throw new ArgumentNullException("something");
}

作为方法的第一个块应该会很好。

你试过了吗:

if(something == null) throw new ArgumentNullException("something");

我看不出为什么这不能编译?

你的"something == null"语句是怎么写的?下面的代码对我来说是编译的,我认为你可以稍微调整一下,让它有合适的if/else条件。

    public void DoSomething(Action<object> something)
    {
        if (something != null)
        {
            something(getObject());
        }
    }