当方法phpunit中没有参数时,assertFalse应该传递

时间:2017-03-30 07:03:02

标签: php mocking phpunit

My Test包含wp_verify_nonce并在OOP环境中实现。 现在问题是:如果verifyNonce()没有传递arguemnts,那么我想期望由于函数返回false:

verifyNonce():

     public function verifyNonce( $nonce ) {

          if( ! function_exists( 'wp_verify_nonce') || empty( $nonce ) || !is_string( $nonce ) )  return false; 

          return wp_verify_nonce( $nonce, $this->action );

     }

如果$ nonce为空,那么它应该返回false,因为我传递了if条件!

现在我在这里期待当没有通过争论时,它应该返回false:

testVerifyNonce():

public function testVerifyNonce() {

      $action        = 'my_action';
      $nonce         = '4832552f';

      $myWPNonce     = new test\MY_WP_Nonces( $action );

      \WP_Mock::userFunction( 'wp_verify_nonce', array( 

           'times'             =>   3,
           'return_in_order'   =>   array(false, 1, 2)

      ) );

      $this->assertFalse( $myWPNonce->verifyNonce() );

      $this->assertEquals( 1, $myWPNonce->verifyNonce( $nonce ) );

      $this->assertEquals( 2, $myWPNonce->verifyNonce( $nonce ) );

 }

这是我的bash控制台的输出:

PHPUnit 5.1.7 by Sebastian Bergmann and contributors.

..E....                                                             7 / 7 (100%)

Time: 206 ms, Memory: 8.00Mb

There was 1 error:

1) MYWPNonce_Test::testVerifyNonce
Missing argument 1 for Mywpnonces\src\wpnonce\MY_WP_Nonces::verifyNonce(), called in /mnt/c/Users/hm/Desktop/Github/Mywpnonces/src/tests/wpnonceTest.php on line 76 and defined

/mnt/c/Users/hm/Desktop/Github/Mywpnonces/src/wpnonce.php:37
/mnt/c/Users/hm/Desktop/Github/Mywpnonces/src/tests/wpnonceTest.php:76

FAILURES!
Tests: 7, Assertions: 6, Errors: 1.

1 个答案:

答案 0 :(得分:0)

PHPUnit测试$myWPNonce->verifyNonce()的返回值。在此之前,您必须传递参数,因为它在方法中定义为必需参数。

PHPUnit不会测试遗忘/丢失的参数。 PHP本身会对此进行验证。

因此传递一些应该返回false的东西。