如何使用Sinon存根JSON文件

时间:2019-07-04 14:44:47

标签: tdd sinon

我有一个以以下方式需要的JSON文件:

const things = require('./path/to/things);

我想将此文件存入沙箱中,以便它始终返回给定的灯具。


const fixture = {
  fake: "things"
}

const sandbox = sinon.createSandbox();

beforeEach(() => {
  sandbox.stub(things).returns(fixture);
});

afterEach(() => {
  sandbox.restore();
});

这导致错误returns is not a function。我不确定如何使用沙箱对JSON进行存根。谁能帮我吗?

2 个答案:

答案 0 :(得分:1)

您只能存根方法调用。在这种情况下,呼叫为boolean。我认为您有两种选择:

  1. 将require函数存根。

    ConfigParser

    以下是与上述内容的关联链接:https://repl.it/repls/PessimisticSubtleHexagon

  2. 使您的受测系统依赖于Sub test() rng = ActiveSheet.Range("D7:D23") For Each cl In rng ' do something with this row Next cl End Sub 并进行注入。这样,您就可以将要测试的逻辑与import语句分离。

答案 1 :(得分:0)

另一种方法是使用proxyquire允许require语句返回模拟json。

// noCallThru() is used to prevent call to the real JSON
// @see https://github.com/thlorenz/proxyquire#preventing-call-thru-to-original-dependency

const proxyquire = require('proxyquire').noCallThru();

const fixture = {
  fake: "things"
}

const src = proxyquire('./source-file', { './path/to/things': fixture });

beforeEach(() => {
  // empty
});

afterEach(() => {
 // empty
});

希望有帮助