Random String作为相同的字符串传递给php

问题描述 投票:0回答:1

尝试使用PHP和Behat创建功能测试,我想要一个随机字符串用于电子邮件,但我希望每次新测试运行时字符串都是随机的,但我想将创建的相同字符串作为参数传递给不同的测试。

因此,如果我生成一个10位数字符串,我想生成字符串,然后通过其他测试将其作为相同的10位数序列传递

我是PHP的新手,所以我不太确定如何设置它,但这是我目前在Behat上下文文件中的内容

class FeatureContext implements Context {

private $MailPage;
private $registrationpage;


/**
 * Initializes context.
 *
 * Every scenario gets its own context instance.
 * You can also pass arbitrary arguments to the
 * context constructor through behat.yml.
 */
public function __construct(MailPage $mailPage, RegistrationPage $registrationpage)
{
    // Page obects injected directly in constructor with type hints.
    $this->MailPage = $MailPage;
    $this->registrationpage = $registrationpage;
}

/**
 * @BeforeSuite
 */
public static function  generateRandomString() {

    // Generate random string for Email implementation.
    $randomString = bin2hex(openssl_random_pseudo_bytes(10));
    return $randomString;

}


/**
 * @Given /^I register a temporary email address $/
 */
public function iRegisterATemporaryEmailAddress()
{
    $this->MailPage->grabNewEmail(self::generateRandomEmail());
}

/**
 * @Given /^I register a Developer account$/
 */
public function iRegisterADeveloperAccount()
{

    $this->registrationpage->fillInFormDetails(self::generateRandomEmail());
}

我遇到的问题是,使用参数原样,它每次调用时都会生成一个不同的字符串,但我只希望它为整个套件生成一次。有任何想法吗?

php string random parameters behat
1个回答
1
投票

1-从构造函数中调用方法。

2-使用this将生成的值保存在变量中

private $randomString ;
public function __construct(MailPage $mailPage, RegistrationPage $registrationpage)
{
   //your code
   $this->randomString = $this->generateRandomString();

}

3-要使用此变量,您可以在类$this->randomString等类方法中调用它。

具有构造函数方法的类在每个新创建的对象上调用此方法,因此它适用于对象在使用之前可能需要的任何初始化。

© www.soinside.com 2019 - 2024. All rights reserved.