Вот что я получаю:

*** NameError Exception: undefined local variable or method `null' for #<RSpec::ExampleGroups::EmptyContentValidation:0x00007fdd2d2775d8>

Вот что у меня есть в виде кода:

actual =
        {
            "posts": [
                {
                    "id": 3,
                    "title": "Post 3"
                }
            ],
            "profile": {
                "name": ""
            },
            "nulldata": {
                "res": null
            }
        }

enter image description here

  1. Не знаю, почему RSpec::ExampleGroups::EmptyContentValidation выбрасывается при компиляции приведенного выше фрагмента json
  2. Как избавиться от этого сообщения об ошибке (или отключить эту ошибку, которая не имеет отношения к делу)
0
Prashanth Sams 20 Окт 2019 в 10:31

1 ответ

Лучший ответ

Это не JSON, это хеш Ruby. А в Ruby нет null, вместо этого вы используете nil. Вы можете подтвердить все это, вставив в свой REPL:

actual =
        {
            "posts": [
                {
                    "id": 3,
                    "title": "Post 3"
                }
            ],
            "profile": {
                "name": ""
            },
            "nulldata": {
                "res": null
            }
        }

Это вернет:

NameError: undefined local variable or method `null' for main:Object

Теперь измените его на nil:

actual =
        {
            "posts": [
                {
                    "id": 3,
                    "title": "Post 3"
                }
            ],
            "profile": {
                "name": ""
            },
            "nulldata": {
                "res": nil
            }
        }

Это вернет:

=> {
       :posts => [
        [0] {
               :id => 3,
            :title => "Post 3"
        }
    ],
     :profile => {
        :name => ""
    },
    :nulldata => {
        :res => nil
    }
}

И вы даже можете подтвердить, что это не JSON (который является String), а вместо этого является Hash:

actual.class
=> Hash < Object
2
anothermh 21 Окт 2019 в 16:34