【问题标题】:Wallaby.js not working with jasmine callFake(...)?Wallaby.js 不能与 jasmine callFake(...) 一起使用?
【发布时间】:2018-09-10 17:09:57
【问题描述】:

问题

wallaby.js 似乎没有与茉莉花callFake 合作。我想在“假”函数中使用传递给原始函数的参数。但我总是得到undefinedwallaby

以下测试在直接运行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 代码 v1.21.1

操作系统名称和版本

OSX 10.13.3

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我找到了解决方法:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-05
        • 1970-01-01
        • 1970-01-01
        • 2013-10-14
        • 1970-01-01
        • 1970-01-01
        • 2014-02-10
        • 2013-07-10
        相关资源
        最近更新 更多