foo.js
次のようなファイルがあります。
var exec = require('child_process').exec
...
function start(){
...
exec('open -g http://localhost:<port>'); // opens a browser window
}
// EOF
start()
関数を呼び出すと、ブラウザ ウィンドウが開くことをテストしたいと思います。理想的には、Sinon を使用してスタブアウトし(自動テスト中に実際にブラウザー ウィンドウを開かexec
ないようにするため)、それが呼び出されたことをアサートしたいと考えています。私は多くの方法を試しましたが、どれもうまくいきません。たとえば、次のようになります。exec
foo_test.js
var subject = require('../lib/foo');
describe('foo', function(){
describe('start', function(){
it('opens a browser page to the listening address', function(){
var stub = sinon.stub(subject, 'exec', function(){
console.log('stubbed exec called');
}); // fails with "TypeError: Attempted to wrap undefined property exec as function"
});
});
});
どうすればこれを行うことができますか?