如何将 SFDX 与赛普拉斯一起使用?
How can I use SFDX with Cypress?
我目前可以在我的 cypress 文件夹中连接我的销售团队。问题是我无法在规范文件中同时使用这两种工具。另外,我正在尝试使用 jsforce,但我不知道如何与 cypress 集成。
有没有人知道这样做的好主意?
示例:
const jsforce = require('jsforce');
require('dotenv').config()
const {SF_LOGIN_URL, USER_NAME, PASSWORD, SECURITY_TOKEN} = process.env
const conn = new jsforce.Connection({
loginUrl: SF_LOGIN_URL
})
conn.login(USER_NAME, PASSWORD+SECURITY_TOKEN, (err, userInfo)=>{
if(err){
console.error(err)
}
conn.query('SELECT Id, Name FROM Opportunity', function(err, opportunity){
if(err){ return console.error(err);}
console.log(opportunity.records)
});
});
如果您转到 JSForce page,您使用的代码位于 Node.js 选项卡下。
任何需要 Node 到 运行 的东西都必须放在 task 中,所以我想不到
/cypress/plugins/index.js
module.exports = (on, config) => {
on('task', {
loginJSForce() {
const jsforce = require('jsforce');
require('dotenv').config();
const {SF_LOGIN_URL, USER_NAME, PASSWORD, SECURITY_TOKEN} = process.env;
const conn = new jsforce.Connection({
loginUrl: SF_LOGIN_URL
})
conn.login(USER_NAME, PASSWORD+SECURITY_TOKEN, (err, userInfo) => {
if (err) {
console.error(err)
}
conn.query('SELECT Id, Name FROM Opportunity', (err, opportunity) => {
if (err) {
return console.error(err);
}
console.log(opportunity.records)
});
});
return null
},
})
}
测试
cy.task('loginJSForce');
我猜你想在测试中 运行 一些针对 opportunity.records
的断言,在这种情况下你至少需要 return 它们(而不是 return null
).
基于此示例 Return number of files in the folder,它需要一个 Promise,可能看起来像这样
/cypress/plugins/index.js
module.exports = (on, config) => {
on('task', {
loginJSForce() {
const jsforce = require('jsforce');
require('dotenv').config();
const {SF_LOGIN_URL, USER_NAME, PASSWORD, SECURITY_TOKEN} = process.env;
const conn = new jsforce.Connection({ loginUrl: SF_LOGIN_URL });
return new Promise((resolve, reject) => {
conn.login(USER_NAME, PASSWORD+SECURITY_TOKEN, (err, userInfo) => {
if (err) {
return reject(err);
}
conn.query('SELECT Id, Name FROM Opportunity', (err, opportunity) => {
if (err) {
return reject(err);
}
return resolve(opportunity.records)
})
})
})
},
})
}
测试
cy.task('loginJSForce')
.then(records => console.log(records));
示例中有些地方不一致,例如 return reject(err)
但 resolve(files.length)
上没有 return。我希望他们受到同样的对待。
您可以在工作系统上尝试使用和不使用 return
,看看哪种方式有效。
您也可以尝试将 Web 浏览器 选项卡上的代码调整为测试脚本中的 运行,但由于您使用 dotenv
和 process.env
你可能仍然需要一个任务来访问那些环境变量。
我目前可以在我的 cypress 文件夹中连接我的销售团队。问题是我无法在规范文件中同时使用这两种工具。另外,我正在尝试使用 jsforce,但我不知道如何与 cypress 集成。
有没有人知道这样做的好主意?
示例:
const jsforce = require('jsforce');
require('dotenv').config()
const {SF_LOGIN_URL, USER_NAME, PASSWORD, SECURITY_TOKEN} = process.env
const conn = new jsforce.Connection({
loginUrl: SF_LOGIN_URL
})
conn.login(USER_NAME, PASSWORD+SECURITY_TOKEN, (err, userInfo)=>{
if(err){
console.error(err)
}
conn.query('SELECT Id, Name FROM Opportunity', function(err, opportunity){
if(err){ return console.error(err);}
console.log(opportunity.records)
});
});
如果您转到 JSForce page,您使用的代码位于 Node.js 选项卡下。
任何需要 Node 到 运行 的东西都必须放在 task 中,所以我想不到
/cypress/plugins/index.js
module.exports = (on, config) => {
on('task', {
loginJSForce() {
const jsforce = require('jsforce');
require('dotenv').config();
const {SF_LOGIN_URL, USER_NAME, PASSWORD, SECURITY_TOKEN} = process.env;
const conn = new jsforce.Connection({
loginUrl: SF_LOGIN_URL
})
conn.login(USER_NAME, PASSWORD+SECURITY_TOKEN, (err, userInfo) => {
if (err) {
console.error(err)
}
conn.query('SELECT Id, Name FROM Opportunity', (err, opportunity) => {
if (err) {
return console.error(err);
}
console.log(opportunity.records)
});
});
return null
},
})
}
测试
cy.task('loginJSForce');
我猜你想在测试中 运行 一些针对 opportunity.records
的断言,在这种情况下你至少需要 return 它们(而不是 return null
).
基于此示例 Return number of files in the folder,它需要一个 Promise,可能看起来像这样
/cypress/plugins/index.js
module.exports = (on, config) => {
on('task', {
loginJSForce() {
const jsforce = require('jsforce');
require('dotenv').config();
const {SF_LOGIN_URL, USER_NAME, PASSWORD, SECURITY_TOKEN} = process.env;
const conn = new jsforce.Connection({ loginUrl: SF_LOGIN_URL });
return new Promise((resolve, reject) => {
conn.login(USER_NAME, PASSWORD+SECURITY_TOKEN, (err, userInfo) => {
if (err) {
return reject(err);
}
conn.query('SELECT Id, Name FROM Opportunity', (err, opportunity) => {
if (err) {
return reject(err);
}
return resolve(opportunity.records)
})
})
})
},
})
}
测试
cy.task('loginJSForce')
.then(records => console.log(records));
示例中有些地方不一致,例如 return reject(err)
但 resolve(files.length)
上没有 return。我希望他们受到同样的对待。
您可以在工作系统上尝试使用和不使用 return
,看看哪种方式有效。
您也可以尝试将 Web 浏览器 选项卡上的代码调整为测试脚本中的 运行,但由于您使用 dotenv
和 process.env
你可能仍然需要一个任务来访问那些环境变量。