TypeError: oes.addValidationError не является функцией - PullRequest
0 голосов
/ 20 октября 2018

Обновление

Jest Issue Report

Я несколько сузил это.Значение oes каким-то образом переключается с Object на логическое значение true прямо в середине функции, и переключатель регистрируется дважды.Это действительно странно.Это то, что я вставил в функцию validateProperty в строке 64:

const propertyValue = o[propertyName];

console.log("OES LINE 64: ", oes);

console.log src/utilities/utilities.ts:64
OES LINE 64:  ObjectErrors { valid: true, errors: [], cache: {} }

console.log src/utilities/utilities.ts:64
OES LINE 64:  true

Похоже, что среда выполнения может каким-то образом переключать значение oes во время выполнения вызова функции ..Я предполагаю, что это какая-то ошибка Jest, но на самом деле это вообще не должно происходить, так как выполняется только один тест.

Я зафиксировал весь репозиторий с моими тактовыми инструкциями в случаекто-нибудь захочет взглянуть на то, что я описал выше .

Оригинальный вопрос

Выполнение этого теста с помощью Jest и для приведенного ниже кода время выполнения записывается в журнал TypeError: oes.addValidationError is not a function.

  90 |         );
  91 |         console.log("THIS IS THE FUNCTION: ", oes.addValidationError);
> 92 |         oes.addValidationError(ve);
     |             ^
  93 |         oes.valid = false;
  94 |       }
  95 |     }

Как видно, я записываю, что такое oes.addValidationError.Вывод журнала выглядит следующим образом:

console.log src/utilities/utilities.ts:91
THIS IS THE FUNCTION:  undefined

console.log src/utilities/utilities.ts:91
THIS IS THE FUNCTION:  function (ve) {
        var key = utilities_1.getObjectPropertyKey(ve.vc.target.name, ve.vc.propertyName);
        this.errors.push(ve);
        this.pushtIfAbsent(key, ve);
    }

Таким образом, похоже, что функция не определена при первой попытке выполнения оператора журнала, а затем внезапно определяет себя.

Это класс, из которого экземпляр oes является конструктором. .Как можно видеть, экземпляр имеет определенный метод.

И этот тест вызвал странное поведение

Чтобы увидеть это в действии:

  git clone https://github.com/fireflysemantics/validator

А затем запустите:

`npm t src/decorators/IfValid.spec.ts`

Если я закомментирую большую часть теста и просто запустите это:

let oes = new ObjectErrors();
expect(typeof oes.addValidationError === "function").toBeTruthy();

Тест пройден ...

1 Ответ

0 голосов
/ 20 октября 2018

Это было исправлено.Для меня тесты были запущены, хотя были ошибки компиляции, поэтому я думаю, что это проблема с ts-jest. Открыл там еще одну проблему .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...