gpt4 book ai didi

javascript - 如何测试expressJS Controller -NodeJS

转载 作者:行者123 更新时间:2023-12-02 22:53:04 25 4
gpt4 key购买 nike

尝试对我的 Controller 进行单元测试,但是当我这样做时,出现以下错误。

我愿意接受以不同方式测试我的 Controller 的答案。

错误:

TypeError: expected sinon object

 const test = require('sinon-test');



describe('index (get all)', function() {
beforeEach(function() {
res = {
json: sinon.spy(),
status: sinon.stub().returns({ end: sinon.spy() })
};
expectedResult = [{}, {}, {}];
});
it(
'should return array of vehicles or empty array',
test(() => {
this.stub(Vehicle, 'find').yields(null, expectedResult);
Controller.index(req, res);
sinon.assert.calledWith(Vehicle.find, {});
sinon.assert.calledWith(res.json, sinon.match.array);
})
);
});

最佳答案

首先,在询问 StackOverflow 问题时,发布一个完全可运行的示例并说明所有依赖项是有意义的。基本上,我花了一个多小时来尝试测试这个,因为两者都丢失了。

这是完全扩展的示例,只是两个主要对象的虚拟实现。

var sinon = require("sinon");
var sinonTest = require("sinon-test");
var test = sinonTest(sinon);

const Vehicle = {
find() {}
};
const Controller = {
index() {}
};

describe("index (get all)", function() {
let expectedResult, res, req;

beforeEach(function() {
res = {
json: sinon.spy(),
status: sinon.stub().returns({ end: sinon.spy() })
};
expectedResult = [{}, {}, {}];
});

it(
"should return array of vehicles or empty array",
test(function() {
this.stub(Vehicle, "find").yields(null, expectedResult);
Controller.index(req, res);
sinon.assert.calledWith(Vehicle.find, {});
sinon.assert.calledWith(res.json, sinon.match.array);
})
);
});

现在,回答你的问题,这就是你收到错误的原因。首先要测试的是:当我更新到测试的依赖项的最新版本时,是否会出现该bug?答案是,不,它没有出现。基本上,这是关于您使用 sinon-test 2.0 版,该版本与 Sinon 3 存在兼容性错误。这来自 changelog :

2.1.0 / 2017-08-07
==================
Fix compatibility with Sinon 3 (#77)


2.0.0 / 2017-06-22
==================

* Simplify configuration API (#74)

因此,鉴于该问题已得到修复,并且正在使用下面的示例,因此测试完全可以运行:

mocha mytest.js 


index (get all)
1) should return array of vehicles or empty array


0 passing (6ms)
1 failing

1) index (get all)
should return array of vehicles or empty array:
AssertError: expected find to be called with arguments

这里的错误当然不是真正的错误,而只是我没有完全实现您的 Controller 和车辆类的副产品。

关于javascript - 如何测试expressJS Controller -NodeJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58107900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com