Wallaby.js не работает с жасмином callFake(...)?

проблема

wallaby.js похоже не работает с жасмином callFake, Я хочу использовать аргументы, переданные исходной функции внутри функции "fake". Но я всегда получаю undefined с wallaby,

Тест ниже работает при запуске jasmine напрямую, но ломается при запуске через wallaby,

Это случилось с кем-то еще? Есть идеи как это исправить?

Тестовое задание

it('test callFake and wallaby', async () => {
  // Arrange
  const myObj = {
    myFunc: (a) => a + 1,
  };

  spyOn(myObj, 'myFunc')
    .and.callFake(arg => arg);

  // Act
  const result = myObj.myFunc(1);

  // Assert
  expect(result).toBe(1);
});

введите описание изображения здесь

Связанная информация

Файл конфигурации Wallaby.js

module.exports = (wallaby) => {
  return {
    files: [
      'src/**/*.js',
      'migrations/*',
      'test/_helpers/*',
      'seeds/*',
      'config/*',
      { pattern: '.env', instrument: false },
    ],

    tests: [
      'test/**/*.spec.js',
    ],

    compilers: {
      '**/*.js': wallaby.compilers.babel(),
    },

    testFramework: 'jasmine',

    env: {
      type: 'node',

      params: {
        env: 'NODE_ENV=test;MONGODB_CONQUERY=mongodb://localhost:27017/athena-test',
      },
    },
    workers: {
      initial: 1,
      regular: 1,
      restart: true,
    },

    setup: (/* wallaby */) => {
      require('dotenv').load({ path: '.env' }); // eslint-disable-line
      require('./test/_helpers/dropDatabase'); // eslint-disable-line
    },

    teardown: (/* wallaby */) => {
    },
  };
};

Редактор кода или IDE имя и версия

Visual Studio Code v1.21.1

Название и версия ОС

OSX 10.13.3

2 ответа

Решение

Это была ошибка в поддержке Jasmine 2.x в валлаби, она исправлена ​​нет w.

Я нашел обходной путь:

Я использовал ссылку на шпиона внутри callFake функция. Смотрите код ниже:

it('test callFake and wallaby', async () => {
    // Arrange
    const myObj = {
      myFunc: (a) => a + 1,
    };

    const spy = spyOn(myObj, 'myFunc')
      .and.callFake(
        () => spy.calls.argsFor(0)[0]
      );
    // Act
    const result = myObj.myFunc(1);

    // Assert
    expect(result).toBe(1);
  });

Но я все еще думаю, что это не правильное поведение.

Другие вопросы по тегам