我试图将Protractor代码与mailosaur集成以处理电子邮件功能,但在Protractor中编码时无法获取值。当我在node.js中尝试相同的代码时,它正常工作,我能够获得该值。以下是代码:
在Node.js文件中:
var Mailosaur = require("mailosaur")("Your_API_Key");
var mailbox = new Mailosaur.Mailbox("MailboxID");
console.log("Here it begins!");
mailbox.getEmails(function(err, emails) {
console.log(err);
console.log(emails);
console.log("Are you even going inside?");});
在cmd中运行: node filename.js
结果:以cmd格式显示Json格式的数据。
同样的事情,Protractor代码不起作用,下面是代码。
describe('Test Mail', function() {
it('should display the data', function(){
var Mailosaur = require("mailosaur")("Your_API_Key");
var mailbox = new Mailosaur.Mailbox("MailboxID");
console.log("Here it begins!");
mailbox.getEmails(function(err, emails) {
console.log(err);
console.log(emails);
console.log("Are you even going inside?");});})});
使用提及相应规范文件的配置文件运行它:量角器config.js
结果:只显示顶部日志,即"此处开始!",不显示邮件内容,如上例中node.js。
如果我遗漏了某些东西,请提出建议。
答案 0 :(得分:1)
在这里欺骗你实际上并没有为量角器控制流程安排一些动作,所以jasmine认为测试已经完成。
检查一下 - http://www.protractortest.org/#/control-flow
量角器调整Jasmine,以便每个规范自动等待直到 退出前控制流是空的。
对于你的代码,这样的东西可能有所帮助 - 只需将promise设置为控制流程:
describe('Test Mail', function() {
it('should display the data', function(){
var deferred = protractor.promise.defer();
var Mailosaur = require("mailosaur")("Your_API_Key");
var mailbox = new Mailosaur.Mailbox("MailboxID");
console.log("Here it begins!");
mailbox.getEmails(function(err, emails) {
console.log(err);
console.log(emails);
console.log("Are you even going inside?");
deferred.resolve();
});
})
});