Почему я получаю исключение NullReferenceException в этом тесте MSpec?

#c# #mspec #ncrunch

#c# #mspec #ncrunch

Вопрос:

Итак, у меня установлены эти пакеты nuget:

Nuget

Кульминацией являются эти ссылки:

Ссылки

Я использую NCrunch. У меня есть эта спецификация:

 namespace GlobPatternMatching.Tests
{
    using FluentAssertions;

    using Machine.Fakes;
    using Machine.Specifications;

    [Subject(typeof(GlobMatching))]
    public class When_Given_Literal : WithSubject<GlobMatching>
    {
        private static string pattern = "path";

        private static string[] resu<

        private Establish context => () =>
            {
                pattern = "path";
            };

        private Because of => () => result = Subject.GetGlobs(pattern);

        private It should_return_path_in_the_array = () =>
            {
                result[0].Should().Be("path");
            };
    }
}
  

Для этого класса:

 namespace GlobPatternMatching
{
    using System;

    public class GlobMatching
    {
        public string[] GetGlobs(string pattern)
        {
            return pattern.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
        }
    }
}
  

Сразу после TDD я получаю исключение с нулевой ссылкой. При отладке я не могу выполнить пошаговый метод, и все поля класса спецификации имеют значение null…..

Я не чувствую, что я что-то упускаю, но если вы не возражаете взглянуть и выяснить, что я здесь сделал не так, это было бы хорошо. Я использую последнюю версию VS2015, NCrunch и т. Д…

Ответ №1:

Вы не поверите, в чем проблема…

 private Establish context => () =>
{
    pattern = "path";
};

private Because of => () => result = Subject.GetGlobs(pattern);
  

Я поставил => вместо = ….

 // ----------------------/-------
private Establish context = () =>
{
    pattern = "path";
};

// ----------------/------------    
private Because of = () => result = Subject.GetGlobs(pattern);