【问题标题】:Dalekjs and running Nodejs FunctionsDalekjs 和运行 Nodejs 函数
【发布时间】:2016-01-04 14:56:06
【问题描述】:

我正在编写运行测试的代码,如果结果以某种方式返回,我想给自己发送一封电子邮件。

不幸的是,每次 DalekJS 运行我的代码时,它似乎都会跳过电子邮件功能。

这是我的代码的样子。出于安全目的,我跳过了登录和打开站点部分。所有这部分工作正常。代码挂在 test.wait(15000) 上。

这是要求代码var emailjs = require('./seeifemail');

test.click('#header_navbar_account_landers')
test.wait(15000)
test.execute(function() {
    if ($('#select2-chosen-6').text() != "United States of America") {
      $('#select2-chosen-6').text("United States of America")
      $('#select2-chosen-6').change()
    }
    })
    var msgCnt = parseInt($('.loaded-total').text(), 10);
    if (msgCnt > 0) {
      emailjs.magicFn
      return 'done'

    } else {
      alert('it didn\'t work')
      return 'done'
    }

  test.wait(20000)
  test.done();

这是 seeifemail 的样子。

var email = require('emailjs/email');
var server = email.server.connect({
user: "username",
password: "password",
host: "smtp.gmail.com",
ssl: true
});

 module.exports = {
 magicFn: function() {


server.send({
  text: "i hope this works",
  from: "you <username@your-email.com>",
  to: "email@email.com",
  cc: "else <else@your-email.com>",
  subject: "testing emailjs"
}, function(err, message) {
  console.log(err || message);
});

感谢您的帮助!

【问题讨论】:

  • 澄清一下,'done' 是否返回,即msgCnt &gt; 0?如果是您,您是否尝试在 server.send() 中包含回调?在发送电子邮件之前,您的脚本可能会终止(由return 引起)。

标签: node.js dalekjs


【解决方案1】:

详细说明我的评论:也许您必须等待 server.send() 完成,然后才能 return 并因此(可能)终止您的应用程序:

test.click('#header_navbar_account_landers');
test.wait(15000);
test.execute(function() {
  if ($('#select2-chosen-6').text() != "United States of America") {
    $('#select2-chosen-6').text("United States of America");
    $('#select2-chosen-6').change();
  }
});
var msgCnt = parseInt($('.loaded-total').text(), 10);
if (msgCnt > 0) {
  emailjs.magicFn(function(err, message) {
    return 'done';
  });

} else {
  alert('it didn\'t work');
  return 'done';
}
test.wait(20000);
test.done();

然后:

var email = require('emailjs/email');
var server = email.server.connect({
  user: "username",
  password: "password",
  host: "smtp.gmail.com",
  ssl: true
});

module.exports = {
  magicFn: function(callback) {
    server.send({
      text: "i hope this works",
      from: "you <username@your-email.com>",
      to: "email@email.com",
      cc: "else <else@your-email.com>",
      subject: "testing emailjs"
    }, callback);
  }
};

【讨论】:

  • 感谢您的回复。删除 return 语句或在其之间添加一些东西似乎没有任何效果。它仍然处于等待状态并且从不运行函数 magicFn
  • 从文档来看,您没有为 DalekJS 定义有效的测试用例。你的if then 实际上应该是assertion,不是吗?
  • 是的 msgCnt >0 确实返回 true。如果我要运行 `if (msgCnt >0) { alert('something'); } ' 它将返回警报。同样,当值为 false 时,它​​会成功运行错误代码。断言的问题是它们似乎没有返回一个假值的真值,而是在命令行工具中显示为通过或失败。因此,我似乎无法让函数作为断言值的效果运行。这就是我最终使用 test.execute 方法的原因,因为它应该允许非 dalekjs 函数运行。它执行但似乎不运行 nodejs 函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
  • 2019-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多