运行 脚本之前的存根函数作为子进程
Stub functions before running script as child process
我大多只见过自动化测试中使用的模拟和存根。但我想存根用于手动测试我的应用程序的方法。这样我就可以 运行 我的服务器并在我的浏览器中手动测试我的应用程序,例如,当我按下按钮购买商品时,后端将被打断,以便对 stripe 的调用被假调用打断条纹。
我想创建一个测试环境来执行此操作。在这个测试环境中,我想存根一些方法,比如 api 对条带的调用。我认为可以通过编写存根方法的脚本来创建此测试环境,然后在设置存根后从子进程启动应用程序。
但是在将脚本作为子进程启动之前,我无法对方法进行存根。当我使用 child_process
启动文件时,存根不起作用。
重新创建:
- 转到 this 沙箱
- 进入终端点击+按钮打开非只读终端
- 运行
node src/runStubbedScript.js
在终端中你会得到:
making an http request to Stripe. This may take a while...
但我希望存根能够替换它并给我 skipping call to stripe
。
如何在启动脚本之前存根方法?
代码
index.js
:
const stripeInterface = require('./stripeInterface');
stripeInterface.charge();
stripeInterface.js
:
const stripe = {
charge: () => console.log('making an http request to Stripe. This may take a while...'),
};
module.exports = stripe;
runStubbedScript.js
在这里,我尝试存根 Stripe 接口,然后启动 index.js
:
const { exec } = require('child_process');
const sinon = require('sinon');
const stripe = require('./stripeInterface');
sinon.stub(stripe, 'charge').callsFake(() => console.log('skipping call to stripe'));
exec('node index.js', (error, stdout, stderr) => {
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
if (error !== null) {
console.log(`exec error: ${error}`);
}
});
我意识到我可以 require
文件而不是执行 child_process
,它会执行我想要的操作:
const sinon = require('sinon');
const stripe = require('./stripeInterface');
sinon.stub(stripe, 'charge').callsFake(() => console.log('skipping call to stripe'));
require('./index'); // this runs index and the stripe function is stubbed
我大多只见过自动化测试中使用的模拟和存根。但我想存根用于手动测试我的应用程序的方法。这样我就可以 运行 我的服务器并在我的浏览器中手动测试我的应用程序,例如,当我按下按钮购买商品时,后端将被打断,以便对 stripe 的调用被假调用打断条纹。
我想创建一个测试环境来执行此操作。在这个测试环境中,我想存根一些方法,比如 api 对条带的调用。我认为可以通过编写存根方法的脚本来创建此测试环境,然后在设置存根后从子进程启动应用程序。
但是在将脚本作为子进程启动之前,我无法对方法进行存根。当我使用 child_process
启动文件时,存根不起作用。
重新创建:
- 转到 this 沙箱
- 进入终端点击+按钮打开非只读终端
- 运行
node src/runStubbedScript.js
在终端中你会得到:
making an http request to Stripe. This may take a while...
但我希望存根能够替换它并给我 skipping call to stripe
。
如何在启动脚本之前存根方法?
代码
index.js
:
const stripeInterface = require('./stripeInterface');
stripeInterface.charge();
stripeInterface.js
:
const stripe = {
charge: () => console.log('making an http request to Stripe. This may take a while...'),
};
module.exports = stripe;
runStubbedScript.js
在这里,我尝试存根 Stripe 接口,然后启动 index.js
:
const { exec } = require('child_process');
const sinon = require('sinon');
const stripe = require('./stripeInterface');
sinon.stub(stripe, 'charge').callsFake(() => console.log('skipping call to stripe'));
exec('node index.js', (error, stdout, stderr) => {
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
if (error !== null) {
console.log(`exec error: ${error}`);
}
});
我意识到我可以 require
文件而不是执行 child_process
,它会执行我想要的操作:
const sinon = require('sinon');
const stripe = require('./stripeInterface');
sinon.stub(stripe, 'charge').callsFake(() => console.log('skipping call to stripe'));
require('./index'); // this runs index and the stripe function is stubbed