访问 class 方法

Access class methods

我遇到了问题。我有一个单元测试试图从 class 访问方法。我的单元测试如下

public function testReverseArraySuccess()
    {
        $data = "This is a test.";

        $output = (new Reverse)
            ->setInput($data)
            ->get();

        $this->assertEquals(['test', 'a', 'is', 'This'], $output);
    }

我的class如下

class Reverse
{
    public $input;

    /**
     *
     * @param $data
     */
    public function setInput($data) {
        $this->input = $data;
    }

    /**
     *
     *@return void
     */
    public function get()
    {
        return $this->input;
    }
}

如何设置 class 才能通过测试? 我 运行 测试时得到的错误是。

错误:调用成员函数 get() 为 null

setInput 不可链接,因为它不是 return 自身的一个实例。这是一个 void 函数,默认情况下 return 为空,这就是您收到该错误消息的原因。将 setInput 更新为 return class 的实例以使其可链接。

public function setInput($data) {
    $this->input = $data;
    
    return $this;
}

现在 get 将 return 传递给 input 属性 的任何值,这是一个有效的 demo.

然后是反转输入的问题,但我会把它留给 OP。

Reverse实例设置数据后需要直接调用获取数据class。

public function testReverseArraySuccess() {

   $data = "This is a test."; 

   $output = new Reverse;
   $output->setInput($data);

   $this->assertEquals(['test', 'a', 'is', 'This'], $output->get());
}