【问题标题】:Calling a function twice where return string information doesn't change在返回字符串信息不变的情况下调用函数两次
【发布时间】:2021-06-05 19:53:49
【问题描述】:

我已经用 Javascript 为 Web 应用程序编写了一个前端自动化测试,在该应用程序中,您使用电子邮件地址创建新用户,用户登录、注销,然后使用与您详细信息相同的电子邮件地址重新登录系统最初创建的。

为此,我在 Javascript 中有以下功能。当我在同一个类中调用此函数时,它会返回以下电子邮件字符串“email1615148555@example.com”。 当在另一个类中再次调用此函数时,“ts”部分会因时间变化而发生变化。

如何编写代码,以便我可以在同一测试的另一个课程中第二次使用相同的返回电子邮件地址?

请注意,每次测试本身运行时都会生成一个唯一的电子邮件地址。

func() {
        var ts = Math.round((new Date()).getTime() / 1000);
        var consumerEmail = config.email + ts + "@example.com";
        return consumerEmail.toString();
    }

【问题讨论】:

  • func 在一个类里面吗?
  • @evolutionxbox - 是的,它在一个类中

标签: javascript ui-automation playwright


【解决方案1】:

【讨论】:

    【解决方案2】:

    您可以为此创建一个单例服务并执行以下操作:

    var consumerEmail = new (function () {
    
      var consumerEmail = "";
    
       this.get = function() {
         if (!consumerEmail){
           var ts = Math.round((new Date()).getTime() / 1000);
           consumerEmail = config.email + ts + "@example.com";
         }
    
         return consumerEmail.toString();
      }
    })();
    

    然后调用它:

    getConsumerEmail.get();
    

    【讨论】:

      【解决方案3】:

      您可以将逻辑拆分为 2 个单独的函数,并在多个调用中重复使用时间戳。

      const timestamp = () => Math.round(new Date()).getTime() / 1000);
      
      function test(timestamp) {
          return config.email + timestamp + "@example.com";
      }
      
      const ts = timestamp()
      
      test(ts)
      test(ts)
      
      

      【讨论】:

      • 感谢您的完美回答!
      猜你喜欢
      • 2012-10-28
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多