Getting "TypeError: object is not a function" when using supertest/superagent in forEach loop
Getting "TypeError: object is not a function" when using supertest/superagent in forEach loop
我正在使用超级测试按照相同的规则测试一组 URL。
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
我的猜测是我不能有 1 个 supertest 运行 实例两次,但我似乎找不到解决此问题的解决方案。感谢任何帮助。
这是因为你的赋值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
的值被更改为 [=15= 返回的值] 所以在第二次迭代中 request
不再是您期望的函数。
更改以下内容
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
});
我正在使用超级测试按照相同的规则测试一组 URL。
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
我的猜测是我不能有 1 个 supertest 运行 实例两次,但我似乎找不到解决此问题的解决方案。感谢任何帮助。
这是因为你的赋值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
的值被更改为 [=15= 返回的值] 所以在第二次迭代中 request
不再是您期望的函数。
更改以下内容
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
});