使用Sinon在同一文件中的Stubbing方法

Ste*_*che 7 javascript unit-testing sinon reactjs redux

我正在尝试对文件中的函数进行单元测试,同时在SAME文件中存根另一个函数,但是没有应用模拟并且正在调用真正的方法.这是一个例子:

// file: 'foo.js'

export function a() {
   // .....
}

export function b() { 
   let stuff = a(); // call a
   // ...do stuff
}
Run Code Online (Sandbox Code Playgroud)

我的测试:

import * as actions from 'foo';

const aStub = sinon.stub(actions, 'a').returns('mocked return');
actions.b(); // b() is executed, which calls a() instead of the expected aStub()
Run Code Online (Sandbox Code Playgroud)

ano*_*oop 11

一些重组可以使这项工作.

我使用了commonJS语法.在ES6中也应该以相同的方式工作.

foo.js

const factory = {
  a,
  b,
}
function a() {
  return 2;
}

function b() {
  return factory.a();
}

module.exports = factory;
Run Code Online (Sandbox Code Playgroud)

test.js

const ser = require('./foo');
const sinon = require('sinon');

const aStub = sinon.stub(ser, 'a').returns('mocked return');
console.log(ser.b());
console.log(aStub.callCount);
Run Code Online (Sandbox Code Playgroud)

产量

嘲笑回归

1