2016-12-20 6 views
0

私はテスト自動化を実行するためにBrowserStackを使用しています。サイトに「commonCapabilities」を設定する設定例があります。いくつか、このJavaScriptをBrowserstackからのループについて説明できますか?

私はこれが基本的なJSであることを知っていますが、このforループ内の二重パイプの用途は何ですか?

// Code to support common capabilities 
exports.config.multiCapabilities.forEach(function(caps){ 
    for(var i in exports.config.commonCapabilities) caps[i] = caps[i] || exports.config.commonCapabilities[i]; 
}); 

フルconfigが:

for(var i in exports.config.commonCapabilities) { 
    caps[i] = (caps[i] || exports.config.commonCapabilities[i]); 
} 

それが変換できる場合caps[i]を返す意味:

https://www.browserstack.com/automate/protractor

exports.config = { 
    'seleniumAddress': 'http://hub-cloud.browserstack.com/wd/hub', 

    'commonCapabilities': { 
    'browserstack.user': 'xxxx', 
    'browserstack.key': 'xxxx' 
    }, 

    'multiCapabilities': [{ 
    'browserName': 'Chrome' 
    },{ 
    'browserName': 'Safari' 
    },{ 
    'browserName': 'Firefox' 
    },{ 
    'browserName': 'IE' 
    }] 
}; 

// Code to support common capabilities 
exports.config.multiCapabilities.forEach(function(caps){ 
    for(var i in exports.config.commonCapabilities) caps[i] = caps[i] || exports.config.commonCapabilities[i]; 
}); 
+1

これを見てください:http://stackoverflow.com/questions/2802055/what-does-the-construct-x-x-y-mean – G0dsquad

答えて

0

それはより簡単にそうように読まれる表現です本当のところへ。それ以外の場合はexports.config.commonCapabilities[i]を返します。 caps[i]が未定義の場合、それは偽の値なので、変数をexports.config.commonCapabilities[i]に設定します。これは、それぞれが定義されていることを確認する方法です。それ以外の場合は標準設定にフォールバックします。

0

この部分のcaps[i] = caps[i] || exports.config.commonCapabilities[i]は、caps[i]が定義されていない場合(またはnull、false、0、NaN、 ""(偽値ではない))、caps[i] = exports.config.commonCapabilities[i]より大きい場合に基本的に言います。例えば

if(x){/*nothing as it is already assigned*/} else {x = "value"} 

と同じ機能を有する

var x = x || "value" 

最初の値が偽である場合、それは第2の値をチェックします。 trueの場合はtrueを返し、falseの場合falseを返します。 最初の値がtrueの場合、2番目の値が何であっても常にtrueを返します。からhere

関連する問題