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.
答案 0 :(得分:0)
PHPUnit测试$myWPNonce->verifyNonce()
的返回值。在此之前,您必须传递参数,因为它在方法中定义为必需参数。
PHPUnit不会测试遗忘/丢失的参数。 PHP本身会对此进行验证。
因此传递一些应该返回false的东西。