0

スーパーテストを使用して、同じルールで一連の 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');
});

配列に URL が 1 つしかない場合は、問題なく動作します。ただし、2 つ目を追加すると、次の出力で失敗します。

begin
end
begin

file.js:11
request = request(json)
^
TypeError: object is not a function

私の推測では、スーパーテストの 1 つのインスタンスを 2 回実行することはできませんが、これを回避する解決策が見つからないようです。どんな助けでも大歓迎です。

4

2 に答える 2

3

これは、割り当てrequest = request(url)が request 関数をオーバーライドするためです。

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)ステートメントが評価されると、2 番目の反復で sorequestによって返される値が期待していた関数ではなくなるため、値が変更されます。request(url)request

于 2015-03-04T13:05:44.537 に答える
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
    });
于 2015-03-04T13:07:48.567 に答える