phpunit测试,检查传递给函数的参数

时间:2014-12-23 12:22:36

标签: php unit-testing testing phpunit mockery

我需要测试我的课程,并且该课程会发出一个Curl请求。

我想检查传递给curl请求的数据,所以这是代码:

class SendCurl {

    /** @var GuzzleHttp\Client */
    protected $client;

    public function __construct(\GuzzleHttp\Client $client) {
         $this->client = $client;
    }

    public function send() {
        $this->curl();
    }

    protected function curl() {
        $this->client->get(
            $this->statHatUrl, [
                'headers'         => ['Content-Type' => 'application/json'],
                'body'            => $this->getValidJson(),
            ]
        );
    }

}

现在你可以在这里看到,我这样称呼这个类:

$api = new SendCurl($client);
$api->send();

现在我想检查发送到curl get请求的数据 所以我到现在所做的就是使用嘲弄

  $client = Mockery::mock('GuzzleHttp\Client');
  $client->shouldReceive('get')
         ->once()
         ->with(Mockery::type('string'), Mockery::type('array'));

  $obj = new SendCurl($client);
  $obj->send();

所以我成功检查了" get"的第一个参数。客户端的方法是一个字符串, 并且第二个参数是一个数组。

但我如何将它们与精确值进行比较。

类似的东西:

 ->with(Mockery::type('string') && equalsTo('www.WhatEver.com'))

不介意语法,只考虑这个想法。

1 个答案:

答案 0 :(得分:2)

将期望值传递给with()方法:

$client = Mockery::mock('GuzzleHttp\Client');
$client->shouldReceive('get')
       ->once()
       ->with('www.WhatEver.com', array(1, 2);