Невозможно добавить пользовательские сопоставления для Жасмин, используя машинописный и угловой - PullRequest
0 голосов
/ 30 октября 2019

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

, поэтому у меня есть файл с именем custom-matchers.ts

/// <reference path="custom-matchers.d.ts"/>

(() => {
  beforeEach(() => {
    jasmine.addMatchers({
      toHaveText: () => {
        return {
          compare: (actual, expected) => {
            return {
              pass: actual.getText().then(pass => pass === expected)
            };
          },
        };
      },
      toBePresent: () => {
        return {
          compare: (actual, expected) => {
            return {
              pass: actual.isPresent().then(pass => pass === expected),
            };
          },
        };
      }
    });
  });
})();

Файл определения типа с именем custom-matchers.d.ts (я пробовал с другим именем, чем файл ссылок, но он такой же):

declare namespace jasmine {
  interface Matchers<T> {
    toHaveText(text: any): boolean;
    toBePresent(text: any): boolean;
  }
}

этот файл зарегистрирован в другом файле с именем e2e-helper, этот файл импортируется в каждый тестовый файл e2e-helper.ts:

/// <reference path="custom-matchers.d.ts"/>
import './custom-matchers';

Когда я пытаюсь использовать его в тестефайл для примера:

expect(object as any).toBePresent();

Я получил ошибку:

Свойство 'toBePresent' не существует для типа 'Matchers'

1 Ответ

0 голосов
/ 04 ноября 2019

Я нашел решение, я просто импортировал свой файл определения в вспомогательный файл под файлом custom-matchers.ts и переименовал его, чтобы импортировать другое имя, поэтому у меня есть:

import './custom-matchers';
import './custom-matchers-types'; // definition file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...