javascript - TypeError:无法存根不存在的属性
问题描述
我是 nodeJS 的新手,在创建存根时遇到问题。我有一个类,有变量和函数。我想为这种情况写 UT。我正在使用 sinon 为我的班级存根函数,这工作正常,但如何处理变量?
const sinon = require("sinon");
const MyClass = require("../MyClass").MyClass;
describe("the functions for fetching the information", function () {
let requestStub;
let fileReadStub;
cont mockVariable = 'abc';
const mockConfig = {
"ID" : "abc123xyz",
"SERVICE_ENABLED" : true
}
const mockRequest = {
"field1": "value1",
"field2": "value2",
"field3": "value3"
}
beforeEach(function () {
sandbox = sinon.createSandbox();
requestStub = sandbox.stub(MyClass, "createRequestForGraphApi").returns(mockRequest);
sandbox.stub(MyClass, "myVariable").value(mockVariable);
fileReadStub = sandbox.stub(fs, 'readFileSync');
});
afterEach(function () {
sandbox.restore();
});
it("returns the data if info received from Graph is valid", async function () {
let actualEvents = [];
fileReadStub.returns(JSON.stringify(mockConfig));
actualEvents = await MyClass.getEvents("token");
expect(requestStub.calledOnce).to.be.true;
expect(actualEvents).to.deep.equal(expectedEvents);
});
});
在我的函数内部,getEvents 依赖于 2 个东西,1 个函数“createRequestForGraphApi”和 1 个类变量“myVariable”。由于 createRequestForGraphApi 依赖于更多的内部函数,所以我尝试模拟它并且能够做到,但我无法在这里模拟类变量值。
我收到以下变量错误 -
TypeError: Cannot stub non-existent property myVariable
at Function.stub (node_modules/sinon/lib/sinon/stub.js:73:15)
at Sandbox.stub (node_modules/sinon/lib/sinon/sandbox.js:331:37)
at Context.<anonymous> (test/MyClass.spec.js:136:11)
当我为这个类创建对象时,我得到了同样的错误,但对于函数部分。
解决方案
推荐阅读
- r - Plotly Sankey 图中的附加标签
- android - 迁移到 Material Design 主题后如何实现透明状态栏?
- python - 如何获得由多个 pcolormesh 组成的组合数组?
- javascript - 在 JavaScript 中,当我使用带提示的 while 语句时,当用户单击“取消”时,结果出乎意料
- python - 3D 图像到 2D 平面的转换 - 棋盘
- .net - 新的内部 web 应用程序未打开
- r - ggsci颜色没有映射
- node.js - 在 reactjs fetch api 中找不到 404 错误文件
- python - 我的数据在列的值中有逗号,这也是一个分隔符,如何在 python 中通过 csv.reader 读取它
- javascript - 页面不会在 jsx 内的状态更改时重新加载