集成测试测试脚本入队/注册失败

时间:2018-06-07 作者:dingo_d

这个问题与此相关SO post

我正在测试一个插件

public function enqueue_scripts() {
    $main_style = \'public/scripts/application.js\';

    wp_register_script( \'plugin-scripts\', plugin_dir_url( __DIR__ ) . $main_script, array() );

    wp_enqueue_script( \'plugin-scripts\' );
}
插件正在使用composernpm, 因此,它需要为工作而建造。

它是构建的(在我测试它的本地,它在我在VVV上的本地实例中工作)。我写的测试如下

public function test_enqueued_scripts() {
    $this->admin->enqueue_scripts();
    $this->assertTrue( wp_script_is( \'plugin-scripts\' ) );
}
$this->admin 只是我的enqueue方法所在的类的一个实例setUp() 方法

测试失败(Failed asserting that false is true), 我想看看出了什么问题,所以我补充道

public function enqueue_scripts() {
    $main_style = \'public/scripts/application.js\';
    error_log( print_r( plugin_dir_url( __DIR__ ), true ) );
    error_log( print_r( __DIR__, true ) );
    wp_register_script( \'plugin-scripts\', plugin_dir_url( __DIR__ ) . $main_script, array() );

    wp_enqueue_script( \'plugin-scripts\' );
}
然后进行单元测试,我看到

http://example.org/wp-content/plugins/Users/dingo_d/vagrant-local/www/projects/project/public_html/wp-content/plugins/my-plugin/

对于plugin_dir_url( __DIR__ ), 对于__DIR__ 我有

/vagrant-local/www/projects/project/public_html/wp-content/plugins/my-plugin/

测试WordPress实例位于一个临时文件夹中,该文件夹类似

/var/folders/xj/14b3w8w51ll6rw09q72p45cr0000gn/T/wordpress/
但是我的插件没有安装在那里。我猜测试只是将其作为核心功能的来源。还有bootstrap.php 文件正在引用wordpress-develop 位于我的VVV文件夹中。

我不明白的是为什么我会这样example.org url?如何成功测试脚本的排队/注册?

1 个回复
SO网友:Ted Stresen-Reuter

你需要跑步do_action(\'wp_enqueue_scripts\') 在执行断言之前。This article 有更多细节和示例。

结束