Javascript 使用webdriver和cucumber创建Stubbing API

Javascript 使用webdriver和cucumber创建Stubbing API,javascript,selenium-webdriver,webdriver,cucumber,Javascript,Selenium Webdriver,Webdriver,Cucumber,我想使用Cucumber配置的Webdriver对我的应用程序运行一些BDD测试,但我想删除我的API。最好不要使用Express,因为我希望我的CI服务器执行这些测试,而Express会增加复杂性 我在网上找不到任何关于从wdio将nock或fetch mock注入浏览器上下文的指导。我想在每个场景之前设置存根调用,然后在场景之后清理 下面是我的wdio.conf.js的相关部分。显然,它不会像写的那样工作,但我希望说明我想做什么。如果有人有有用的建议偏离了这个方向,我还是很乐意听到 /**

我想使用Cucumber配置的Webdriver对我的应用程序运行一些BDD测试,但我想删除我的API。最好不要使用Express,因为我希望我的CI服务器执行这些测试,而Express会增加复杂性

我在网上找不到任何关于从wdio将
nock
fetch mock
注入浏览器上下文的指导。我想在每个场景之前设置存根调用,然后在场景之后清理

下面是我的
wdio.conf.js
的相关部分。显然,它不会像写的那样工作,但我希望说明我想做什么。如果有人有有用的建议偏离了这个方向,我还是很乐意听到

/**
 * Gets executed before test execution begins. At this point you can access to all global
 * variables like `browser`. It is the perfect place to define custom commands.
 * @param {Array.<Object>} capabilities list of capabilities details
 * @param {Array.<String>} specs List of spec file paths that are to be run
 */
before: function (capabilities, specs) {
    fetchMock = require('fetch-mock');

    browser.execute(() => { 
       injectFetchMockSomehow(fetchMock);
    }, fetchMock); 
},

/**
 * Runs before a Cucumber scenario
 * @param {Object} scenario scenario details
 */
beforeScenario: function (scenario) {
    fetchMock.get('/foo', {hello: 'world'});
},

/**
 * Runs after a Cucumber scenario
 * @param {Object} scenario scenario details
 */
afterScenario: function (scenario) {
    fetchMock.reset()
    fetchMock.restore();
},
/**
*在测试执行开始之前执行。此时,您可以访问所有全局
*像“browser”这样的变量。它是定义自定义命令的最佳位置。
*@param{Array.}功能详细信息的功能列表
*@param{Array.}要运行的规范文件路径的规范列表
*/
之前:功能(功能、规格){
fetchMock=require('fetch-mock');
browser.execute(()=>{
注入fetchMock(fetchMock);
},fetchMock);
},
/**
*在黄瓜场景之前运行
*@param{Object}场景详细信息
*/
前场景:功能(场景){
get('/foo',{hello:'world'});
},
/**
*在一个黄瓜场景之后运行
*@param{Object}场景详细信息
*/
赛后:功能(场景){
fetchMock.reset()
fetchMock.restore();
},

这取决于如何在浏览器客户端代码中调用API。它是使用jQuery进行API调用还是使用其他方法?我的客户机代码只是使用fetch。我想做的是在场景之前的
中设置存根
并在场景之后的
中拆除存根
。我想了解的是,API调用是由您的web应用程序、服务器或您测试代码进行的?谁在进行此api调用?此api调用是由我的web应用程序进行的。该API是一个外部依赖项,因此我希望在BDD测试执行过程中对其进行存根。您有权修改该应用程序吗?或者您想使用JavaScript进行注入?原因是如果你不修改应用程序,那么你需要在每次页面更改后注入模拟代码。因为在重新加载页面或引用新页面后,在运行时对JS所做的更改