只有几条注释:
看起来您正在进行功能/集成测试,而不是单独进行单元测试。
此处您正在创建一个用户,但未将其设置为当前用户:
$user = $this->factory->user->create();
wp_set_current_user( 1 );
您可能想要:
$user_id = $this->factory->user->create();
wp_set_current_user( $user_id );
请注意,此处未设置Cookie,因为:
tests_add_filter( \'send_auth_cookies\', \'__return_false\' );
如果您使用例如。
add_filter( \'send_auth_cookies\', \'__return_true\' );
然后,当
setcookie()
从调用
wp_set_auth_cookie()
:
Cannot modify header information - headers already sent by (
The
wp_get_session_token()
是的包装
wp_parse_auth_cookie()
.
使用解析cookiewp_parse_auth_cookie
假设$_COOKIE
已设置。
想知道在您的测试中是否可以使用假令牌字符串?
否则可以尝试:
$expiration = time() + DAY_IN_SECONDS;
$manager = WP_Session_Tokens::get_instance( $user_id );
$token = $manager->create( $expiration );
通过验证:
$this->manager->verify( $token );
然后进行清理:
$this->manager->destroy( $token );