2017-05-06 187 views
0

我有一個測試設置,它接受預定義選項的動態值(例如: - foo =「bar」, - foo =「car」等)命令行。將命令行參數傳遞給nightwatch.runner

這工作:

./node_modules/nightwatch/bin/nightwatch ./tests/test.js --env "production" --foo="bar"

不過,我想從一個節點的應用程序內調用測試,但確實不能似乎得到傳入我的測試額外的參數。我的測試正確初始化,但然後失敗,因爲我不能得到任何額外的參數。

try { 
    const nightwatch = require('nightwatch'); 

    const argv = { 
     config: 'nightwatch.json', 
     test: 'test.js', 
     env: 'default', 
     foo: 'bar', 
    }; 

    const done = function() { 
     console.log('nightwatch complete'); 
    }; // your callback function 

    const settings = {}; 

    nightwatch.runner(argv, done, settings); 

} catch (error) { 
    console.log('Exception:' + error.message); 
} 

似乎是nightwatch.runner或nightwatch.cli絕對沒有文檔,以便您可以提供任何幫助,將不勝感激。

+0

嘗試在'node_modules/nightwatch/bin/runner.js'中的'Nightwatch.runner(argv)'之前添加'console.log(argv)',並運行一些命令。調試輸出表明'argv'中缺少一些字段。 –

+0

感謝隊友,這不太合適,但是讓我走向正確的道路。 – user1411251

回答

0

我花了很多閒逛,看看有什麼被設置在那裏的,但最後我試着玩的設置對象,並意識到,我可以覆蓋全局PARAM像這樣:

var settings = { 
    globals: { 
     foo: 'one', 
     bar: 'two' 
    } 
}; 

這可能ISN」 t設置對象的預期功能在這裏,但它對我有用。

try { 
    const nightwatch = require('nightwatch'); 

    const argv = { 
     config: 'nightwatch.json', 
     test: 'test.js', 
     env: 'default', 
     foo: 'bar', 
    }; 

    const done = function() { 
     console.log('nightwatch complete'); 
    }; // your callback function 

    var settings = { 
     globals: { 
      foo: 'one', 
      bar: 'two' 
     } 
    }; 

    nightwatch.runner(argv, done, settings); 

} catch (error) { 
    console.log('Exception:' + error.message); 
} 

如果任何人誰碰到這個自帶有興趣,我貼在github一個非常簡單的版本。