Внутренний метод тестов вызывает исключение нулевой ссылки, используя XUnit - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь настроить возврат для внутреннего метода объекта Parameter, но установка SetObject выдает исключение nullreference, так что я не уверен, что его вызывает.
Зная _parameterManager - это поддельный объект используя moq, см. код ниже:

 _parameterManager.Setup(x => x.Parameters)
    .Returns(new System.Collections.Generic.List<IParameter>()
    {
        new Parameter()
        {
            Description = new ParameterDescriptor()
            {
                ParameterId = new ParameterId()
                {
                    Id = ParametersId.FERTILIZER_SELECTION_ID, ControllerIndex = 0
                },
            }
        },
        new Parameter()
        {
            Description = new ParameterDescriptor()
            {
                ParameterId = new ParameterId()
                {
                    Id = ParametersId.FERTILIZER_1_ID,ControllerIndex = 1
                },
            }   
        },
        new Parameter()
        {
            Description = new ParameterDescriptor()
            {
                ParameterId = new ParameterId()
                {
                    Id = ParametersId.FERTILIZER_2_ID,ControllerIndex = 2
                },
            }
        },   
        new Parameter()
        {
            Description = new ParameterDescriptor()
            {
                ParameterId = new ParameterId()
                {
                    Id = ParametersId.FERTILIZER_3_ID,ControllerIndex = 3
                },
            }
        },
    });

_parameterManager.Setup(x => x.Parameters.FirstOrDefault(y => y.Description.ParameterId.Id == ParametersId.FERTILIZER_SELECTION_ID)
    .SetObject(It.IsNotNull<uint>()))
    .Returns(ParameterResult.Success);

1 Ответ

1 голос
/ 11 февраля 2020

На самом деле это был Parameter внутри Коллекции, который представлял собой конкретный объект, поэтому xunit не смогла насмехаться над методом SetObject, что привело к возникновению упомянутого исключения.

Ответом является либо добавление Mock parameter объектов вместо конкретных объектов или полностью заполнить объект параметра.

...