Wallaby.js 不使用 jasmine callFake(...)?
Wallaby.js not working with jasmine callFake(...)?
问题
wallaby.js
似乎没有和 jasmine callFake
一起工作。我想在 "fake" 函数中使用传递给原始函数的参数。但我总是用 wallaby
.
得到 undefined
下面的测试在直接 运行 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
OS 名称和版本
OSX 10.13.3
我找到了解决方法:
我在 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);
});
但我仍然认为这不是正确的行为。
这是 Jasmine 中的一个错误 2.x wallaby 支持 it is fixed now.
问题
wallaby.js
似乎没有和 jasmine callFake
一起工作。我想在 "fake" 函数中使用传递给原始函数的参数。但我总是用 wallaby
.
undefined
下面的测试在直接 运行 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
OS 名称和版本
OSX 10.13.3
我找到了解决方法:
我在 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);
});
但我仍然认为这不是正确的行为。
这是 Jasmine 中的一个错误 2.x wallaby 支持 it is fixed now.