我怎么能用开玩笑来监视一个函数

时间:2017-11-05 22:14:13

标签: javascript reactjs jasmine jestjs

我有一个调用另一个函数的函数

app.post('/', upload.single('photo'), function(req, res) {
    // do what you want with req.file
});

我想验证当我调用const getArtist = (id) => { // builds params for other function return otherFuntion(params); } 时,使用正确的参数调用otherFunction。 如何通过开玩笑实现这一目标?

getArtist(someValue)

2 个答案:

答案 0 :(得分:0)

如果它是公共函数,您可以使用proxyquire在编译时模拟导入的函数。如果它是私人功能,那么你绝对不想嘲笑它。

您应该只测试otherFuntion的返回值。

答案 1 :(得分:0)

所以你真的在调用函数 otherFuntion(params)所以我宁愿检查你的 getArtist 函数的返回是否与 otherFunction

describe('getArtist function', () => {
  it('should call otherFunction with the right params', () => {
    expect(getArtist(id)).toBe(otherFunction(params));
  });
});

或者创建用于生成参数的特殊函数并分别进行测试。喜欢 prepareArtistParams 并在里面使用它:

const getArtist = (id) => {
  const params = prepareArtistParams(id);
  return otherFuntion(params);
}

describe('otherFuntion function', () => {
  it('should create right params', () => {
    expect(prepareArtistParams(id)).toBe(params);
  });
});