在CodeCeption中将变量从测试方法传递给另一个

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

我正在使用Codeception来测试3个API:

  1. 发表评论
  2. 写评论的回复
  3. 从帖子中获取所有评论

第一个API返回刚插入数据库的注释的ID。我想将评论ID传递给第二个测试方法。

在PHPUnit中,我会通过从第一个方法返回commentId并使用@depends注释第二个方法来做到这一点,但是在Codeception中@depends不会从第一个方法发送返回的值。

有没有什么方法可以发送值而不将两个测试放在同一个方法中?

我刚开始使用Codeception,所以我可能会错过一些有价值的信息。

php codeception
2个回答
2
投票

Codeception在同一个内存空间中运行所有测试,因此您只需使用GLOBAL关键字:

/**
 * @test1
 */
public function testOne(){
    global $hello;
    $hello = "Hello!";
}

/**
 * @test2
 */
public function testTwo(){
   global $hello;
   $this->assertEquals("Hello!", $hello);
}

0
投票

这工作正常,非常简单。请注意,测试中不应包含的函数应为protected

 protected $var1;
 protected $var2;

public function test1(AcceptanceTester $I){
    $var1 = "Variable1";
    $var2 = "Variable2";
    $this->pass_variable($var1,$var2);
}

public function test2(AcceptanceTester $I){
    $I->doSomethingWithPassedVars($this->var1, $this->var2);
}

protected function pass_variable($var1 = "", $var2 = ""){
    $this->var1 = $var1;
    $this->var2 = $var2;
}
© www.soinside.com 2019 - 2024. All rights reserved.