2016-08-02 21 views
0

我正在編寫一個包含六個測試的Node JS測試套件。在每次測試我傳遞一個變量的品牌,等於一個說法讓我在cookie中傳遞,它看起來像這樣:將一個數組作爲參數處理的節點JS測試套件

const Nightmare = require('nightmare') 
const path = require('path') 

const nightmare = Nightmare({ show: true }) 

var someTest = function(brand){ 
var brand = process.argv[2] 

    nightmare 
    .viewport(1300, 900) 
    .cookies.clear() 
    .cookies.set('brand', brand) 
    .wait('#auth-email') 
    .refresh() 
    .wait('#auth-email') 
    .screenshot(path.join(__dirname, new Date().getTime() + "3.png")) 
    .wait(2000) 
    .click('form[name=loginForm] [type=submit]') 
    .wait(2000) 
    .cookies.clear() 
    .end() 
    .then((res) => console.log('Successful')) 
    .catch((err) => console.error('Errror!')) 
} 

module.exports = someTest 

我有一個運行測試的所有六個當我執行index.js文件它在我的終端使用命令:節點index.js品牌(Cookie),則index.js文件看起來像這樣:

someTest = require('./someTest.js') 

someTest(process.argv[2]); 

someTest2 = require('./someTest2.js') 

someTest2(process.argv[2]); 

在這種index.js文件,我想能夠運行的數組品牌(cookies),而不是在命令行中聲明它:node node.js brand(cookie),看起來像這樣:

var brand = ['cookie1', 'cookie2'] 

someTest = require('./someTest.js') 

someTest(process.argv[2]); 

someTest2 = require('./someTest2.js') 

someTest2(process.argv[2]); 

但是,我不知道如何處理數組作爲參數。節點對我來說是新的,我仍在學習,任何見解都非常感謝。感謝您的幫助:D

+0

你爲什麼在 「someTest」 功能重挫品牌? –

+0

我以爲我需要通過'品牌'作爲參數,所以測試將運行,我把它拿出來,它工作正常。 – nmays

回答

0

我會檢查一個名爲yargs的圖書館。這裏有一個簡單的例子,讓你開始:

index.js:

var argv = require('yargs').argv, 

    params = argv._, 
    // argv has a function called _ that represents an array of all args 

    param1 = params[0], 

    param2 = params[1], 

    param3 = params[2], 

    mydefaultval = {'cat': "i'm a cat"}, 

// or you could destructure 
    [param1, param2, param3=mydefaultval] = argv._; 

在終端我運行: $ node index.js myparam1 myparam2 myparam3