Wallaby.js没有使用jasmine callFake(...)?

时间:2018-04-01 05:29:30

标签: unit-testing jasmine mocking visual-studio-code wallaby.js

问题

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);
});

enter image description here

相关信息

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 个答案:

答案 0 :(得分:1)

这是小袋鼠it is fixed no w中的Jasmine 2.x支持中的一个错误。

答案 1 :(得分:0)

我找到了解决方法:

我在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);
  });

但我仍然认为这不是正确的行为。