我使用supertest按照相同的规则测试一组网址。
var urls = [
"https://www.example.com",
"https://www.example2.com"
];
urls.forEach(function (url) {
console.log('begin');
request = request(url)
.get('')
.expect(200)
.end(function (err, res) {
// Check for something
});
console.log('end');
});
当数组中只有1个URL时,它可以正常工作。但是,如果我添加第二个,则输出失败:
begin
end
begin
file.js:11
request = request(json)
^
TypeError: object is not a function
我的猜测是,我无法运行两次超级运行实例,但我似乎找不到解决方案来解决这个问题。任何帮助表示赞赏。
答案 0 :(得分:2)
这是因为您的作业request = request(url)
会覆盖请求函数。
var urls = [
"https://www.example.com",
"https://www.example2.com"];
urls.forEach(function (url) {
console.log('begin');
var r = request(url)
.get('')
.expect(200)
.end(function (err, res) {
// Check for something
});
console.log('end');
});
在第一次迭代中,request
指的是全局函数,但在评估request = request(url)
语句时,request
的值会更改为request(url)
返回的值,因此在第二次迭代中,request
不再是您期望的功能。
答案 1 :(得分:0)
更改以下内容
request = request(url)
.get('')
.expect(200)
.end(function (err, res) {
// Check for something
});
到
requestVariable = request(url)
.get('')
.expect(200)
.end(function (err, res) {
// Check for something
});