我在使用 gmail api 进行 cypress 测试用例来使用 api 读取和写入电子邮件时遇到问题。但通过阅读不同的博客和观看视频尝试了很多,但没有什么能以更好的方式帮助我。
import { google } from "googleapis";
Cypress.Commands.add("getLatestEmail", () => {
// Authenticate with Gmail API
const auth = new google.auth.GoogleAuth({
keyFile: "path/to/your/credentials.json",
scopes: ["https://www.googleapis.com/auth/gmail.readonly"],
});
const gmail = google.gmail({ version: "v1", auth });
// Fetch list of emails
return gmail.users.messages
.list({
userId: "me",
q: "is:inbox", // Filter by inbox
})
.then((response) => {
// Get the latest email
const latestEmailId = response.data.messages[0].id;
// Fetch the latest email
return gmail.users.messages.get({
userId: "me",
id: latestEmailId,
});
})
.then((email) => {
// Return email data
return email.data;
});
});
以前,我使用gmail api,但每次我都应该更新令牌。有没有最好的解决方案,使用
JavaScript
的自动化测试自动生成运行 gmail api 所需的所有内容?
看起来
googleapis
适用于 NodeJs - 但您正在浏览器中运行它(通过 Cypress 测试)。
Cypress 提供了一种通过 task 在 NodeJs 中运行的方法。
因此,粗略地将代码从自定义命令转换为任务
cypress.config.js
const { defineConfig } = require('cypress')
const {google} = require('googleapis');
function getLatestEmail() {
// code from custom command goes here
}
module.exports = defineConfig({
e2e: {
setupNodeEvents(on, config) {
on('task', {
getLatestEmail
})
},
},
})
测试
cy.task('getLatestEmail').then(email => {
...