【发布时间】:2020-01-15 00:18:01
【问题描述】:
我希望通过 cypress test 与 mongodb 进行交互。我找不到任何有用的文档。请帮助我如何实现这一目标?
【问题讨论】:
标签: cypress
我希望通过 cypress test 与 mongodb 进行交互。我找不到任何有用的文档。请帮助我如何实现这一目标?
【问题讨论】:
标签: cypress
查看他们关于任务的文档:https://docs.cypress.io/api/commands/task.html#Command
我需要用 mongodb 做一些事情,我设法连接做这样的事情(在“插件”目录中):
const MongoClient = require('mongodb').MongoClient;
module.exports = (on, config) => {
on('task', {
updateTask (id) {
return new Promise((resolve) => {
MongoClient.connect('mongodb://localhost:27017', (err, client) => {
if (err) {
console.log(`MONGO CONNECTION ERROR: ${err}`)
throw err;
} else {
const db = client.db('myDB');
db.collection('someCollection').count({}, function(error, numOfDocs){
resolve({success: numOfDocs})
client.close();
})
}
});
}); // end of return Promise
}
}) // end of task
}
你在“规范”中这样称呼它:
cy.task('updateTask', someParam).then((textOrNull) => {
console.log(textOrNull)
})
【讨论】:
从你的 cypress 测试中执行一个 shell 命令:
https://docs.cypress.io/api/commands/exec.html#Syntax
示例:
cy.exec(mongo mydatabase --eval 'db.collection.find({})')
【讨论】:
现在有一个用于 cypress 的 mongodb 插件:https://www.npmjs.com/package/cypress-mongodb
配置完成后,您就可以调用cy 命令在本地或远程数据库中执行操作:
cy.createCollection(...);
cy.dropCollection(...);
cy.insertMany(...);
cy.aggregate(...);
【讨论】: