web-dev-qa-db-ja.com

WordPressバックエンドの単体テスト(is_admin()が真)

私はIRC、Twitter、Slackでこれを尋ねました - これに対する答えを見つけるのがどれほど難しいかに全く驚いています。

私はis_admin()trueを返すとき、すなわちユーザーが管理者パネルを見ているときにのみ実行されるプラグインコードをたくさん持っています。

アサーションが実行されたときに管理コンテキストになるように単体テストを配置するにはどうすればよいですか。

6
aendrew

このテスト に従って、あなたは にナビゲートするためにset_current_screen()を使います - setUpメソッドで - /。

残念ながら、 get_current_screen() ...の非常に役に立つリファレンスページを見れば、このことは明らかではありません。

例:

<?php
class AxisSetupTest extends WP_UnitTestCase {    
    /**
     * @covers AxisWP::__construct
     */
    function test_constructor() {
        // Assert

        // Admin
        $this->assertInternalType('integer', has_action( 'admin_enqueue_scripts', array( 'AxisWP', 'add_admin_stylesheet' ) ) );
    }


    public function setUp() {
            parent::setUp();

            $user_id = $this->factory->user->create( array( 'role' => 'administrator' ) );
            $user = wp_set_current_user( $user_id );

            // This is the key here.
            set_current_screen( 'edit-post' );
    }

    public function tearDown() {
            parent::tearDown();
    }
}
10
aendrew