Rails 6 все тесты validate_presence_of не пройдены

Так как определен Object конструктор . Если аргумент, который вы передаете, является объектом, он просто возвращает этот объект вместо нового. (Теоретически, новый объект был создан new, но затем выброшен, на практике он может быть оптимизирован прочь & nbsp; & mdash; см. Ниже «Примечание».)

Логика в конструкторе Object , игнорируя незначительную деталь, является: Если аргумент не указан или аргумент null или undefined, создайте и верните новый объект; в противном случае возвращаем результат преобразования аргумента в объект. Поскольку аргумент, который вы передаете, уже является объектом, это преобразование не должно ничего делать.

Просто для полноты: конструкторы вообще могут сделать new возвращать существующий объект вместо нового один, возвращая объект не null. (Если конструктор не возвращает ничего нормального case & nbsp; & mdash; или возвращает значение, отличное от объекта, как 42, возвращается объект, созданный с помощью new.) Вот пример:

"use strict";

class Example1 {
  constructor(arg) {
    if (arg && typeof arg === "object") {
      return arg;
    }
  }
}
const a = {};
const e1 = new Example1(a);
console.log(a === e1); // true

class Example2 {
  constructor(arg) {
    if (arg && typeof arg === "object") {
      return arg;
    }
    return 42; // 42 isn't an object
  }
}
const e2 = new Example2();
console.log(e2); // [object Object], not 42

Примечание: теоретически использование new всегда создает новый объект, а затем, если конструктор возвращает другой объект, новый объект просто получает выброшенный. На практике механизмы JavaScript могут оптимизировать создание этого нового объекта, если конструктор не имеет доступа к this.

Примечание 2: Возможно, стоит отметить, что использование new с Object конструктор никогда не нужен. Object - это бит нечетного конструктора. Как определено спецификацией, он игнорирует объект new. new Object() и Object() делают то же самое, что и new Object(value) и Object(value). Опять же, это необычно.

2
задан SimplySerenity 20 January 2019 в 01:39
поделиться

2 ответа

Я сделал эту работу.

Здесь есть запрос на получение доступа к musta_matchers:

https://github.com/thoughtbot/shoulda-matchers/pull/1169

Пока команда shoulda_matchers не объединит его, используйте мою версию здесь:

https://github.com/morsedigital/shoulda-matchers

В вашем Gemfile:

[112 ]
0
ответ дан TerryS 20 January 2019 в 01:39
поделиться

Оказывается, это ошибка в матчах с горчицей.

https://github.com/thoughtbot/shoulda-matchers/issues/1167

0
ответ дан SimplySerenity 20 January 2019 в 01:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: