Visual Studio - Как изменить возвращаемое значение метода в отладчике?

var nodemailer = require('nodemailer');

const transporter = nodemailer.createTransport({
  service: 'gmail',//smtp.gmail.com  //in place of service use host...
  secure: false,//true
  port: 25,//465
  auth: {
    user: 'example@gmail.com',
    pass: 'password'
  }, tls: {
    rejectUnauthorized: false
  }
});

transporter.sendEMail = function (mailRequest) {
  return new Promise(function (resolve, reject) {
    transporter.sendMail(mailRequest, (error, info) => {
      if (error) {
        reject(error);
      } else {
        resolve("The message was sent!");
      }
    });
  });
}

module.exports = transporter;

Использование :

//import transporter JS file
const mail = require('../utils/mail');
let htmlContent = `
                

Contact Form

Hi,

${name} contacted with the following Details


Email: ${email}

Phone: ${phone}

Company Name: ${companyName}

Message: ${message}

` let mailOptions = { from: "Example ", to: "me@gmail.com", subject: "Mail Test", text: "", html: htmlContent } mail.sendMail(mailOptions) .then(function (email) { res.status(200).json({ success: true, msg: 'Mail sent' }); }).catch(function (exception) { res.status(200).json({ success: false, msg: exception }); });

Примечание:

  1. До отправляя электронную почту с помощью Gmail, вы должны разрешить незащищенным приложениям доступ к Gmail. Для этого перейдите в настройки Gmail https://myaccount.google.com/lesssecureapps?pli=1

    [ 115]
  2. Также включите капчу https://accounts.google.com/DisplayUnlockCaptcha

9
задан Helen 17 July 2009 в 22:24
поделиться

6 ответов

Для тех, кто ищет решение этого в VB.NET:

Это было настолько просто, я не могу полагать, что не видел его: Для рассмотрения значения, функция возвратится: просто поместите указатель над именем функции. Значение покажут в подсказке.

Изменение значение: просто нажмите на эту подсказку, измените значение и совершите нападки, входят.

Visual Studio очень прохладна!

Примечание: Я протестировал его в VB.NET в Системе Команды Visual Studio 2008. Просто испытанное использование C#, но это не работает... :-(

4
ответ дан 4 December 2019 в 21:52
поделиться

Возвращаемые значения от функций обычно возвращаются в регистре EAX.

При установке точки останова только в конце функции затем существует шанс, что изменение EAX изменило бы возвращаемое значение. Можно изменить и просмотреть любой регистр в Visual Studio просто путем написания ее имени в окне часов.
Это, вероятно, перестанет работать, если у Вас будет оптимизация на или даже если функция является чем-то простым как return 12. это, вероятно, также не собирается работать при возврате чего-то, что не помещается в регистр на 32 бита. Ни в малейшей степени это стоит попробовать.

5
ответ дан 4 December 2019 в 21:52
поделиться

Не думайте так.
У Вас должен был бы быть временный var в вызываемом или вызывающей стороне, чтобы разобраться со значением для изменения его в окне IDE Debugger/QuickWatch. Таким образом, самый простой и самый быстрый способ сделать это состоял бы в том, чтобы прокомментировать существующий код и внести временное изменение для debug-what-if.

также

private int myMethod_1()
{
  var x = 12;
  return x;
}

Или

private int myMethod_2()
{
  var y = someCall( someValue);
  return y;
}

Не смотрите его стоящий ухудшения 'предотвращения изменения кода', чтобы сделать это. Если я FUBAR, я делаю контроль, и мы являемся золотыми снова.

1
ответ дан 4 December 2019 в 21:52
поделиться

Почему Вы хотите изменить возвращаемое значение в вызываемом методе? Можно легко изменить его на лету в Вызывающем методе. Как только Ваша функция возвращается, Вы возвратили значение, и там можно изменить его.

   private int myMethod_1()
   {
      return 12;
   }
//call would be something like this
int x = myMethod_1();
//Here you can change the value after the execution of the above line.

Даже если Вы не храните возвращаемое значение в переменной, и Вы являетесь непосредственно передающими оно к некоторому другому методу, даже затем можно изменить значение путем продвижения в тот метод и изменения значения аргумента там. Я пропускаю что-то здесь?

0
ответ дан 4 December 2019 в 21:52
поделиться

То, в чем Вы нуждаетесь, Дразнит. Платформы насмешки контроля как Rhinomock, Moq или Typemock.

Для вида сценария Вы описываете, я собираюсь предположить, что Вы не можете иметь чистого контракта - управляемая разработка и, возможно, должны возвратиться в поддельном поведении/состоянии. В этом случае Typemock может быть наилучшим вариантом для Вас, хотя это является коммерческим

0
ответ дан 4 December 2019 в 21:52
поделиться

Я думаю, что можно сделать это в Visual Studio, но это чувствует себя грязным мне.

Мои мысли - Вы, должен действительно изучать платформу поблочного тестирования и дразнить так, чтобы можно было фальсифицировать вывод myMethod_2 как 0 и видеть, какой эффект это имеет на код. IMO. Таким образом, можно уехать, возврат 0 регистрируются в модульном тесте, чтобы удостовериться, что ужасная ошибка не заглядывает снова.

-1
ответ дан 4 December 2019 в 21:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: