尝试使用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());
}
我遇到的问题是,使用参数原样,它每次调用时都会生成一个不同的字符串,但我只希望它为整个套件生成一次。有任何想法吗?
1-从构造函数中调用方法。
2-使用this
将生成的值保存在变量中
private $randomString ;
public function __construct(MailPage $mailPage, RegistrationPage $registrationpage)
{
//your code
$this->randomString = $this->generateRandomString();
}
3-要使用此变量,您可以在类$this->randomString
等类方法中调用它。
具有构造函数方法的类在每个新创建的对象上调用此方法,因此它适用于对象在使用之前可能需要的任何初始化。