我试图为Wordpress插件的代码更改编写测试。
<?php
require_once('.\simpletest\autorun.php');
require_once('.\wp-content\plugins\appointment-booking\includes.php');
// The line above causes [No runnable test cases in...] problem.
// In my actual code, I have absolute path and I've made sure that the path is correct.
class test extends UnitTestCase
{
function test_pass()
{
$this->assertFalse(false);
}
}
?>
请帮助我理解为什么以及如何解决。 如评论中所述,第二个require_once导致错误[在...中没有可运行的测试用例]
例如:
Bad TestSuite [test.php] with error [No runnable test cases in [test.php]]
我希望看不到Bad TestSuite错误。我希望它能够运行测试,就像第二个require_once被注释掉时一样。
我看到此处描述的确切问题:PHP - Simpletest - How to test "included" classes,但我不了解问题或如何解决问题。谢谢。
因为我无法将此问题从&#34;暂停&#34;状态,并且无法找到回答问题的方法。我在这里写了解决方案。
来自Vincent的回答get_home_path()帮我找到了原因,所以我把它标记为答案,虽然从技术上来说并不是真的。当我尝试在我的代码中使用它时,我无法 - 函数名称,而ABSPATH等也没有被定义。原因是它不被认为是WordPress的一部分。进一步搜索https://stackoverflow.com/a/27514259/5885721 调试看到我想要包含的WordPress文件有这个代码
<?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
因此,这就是为什么当运行require函数时,它停止了一切,并且没有找到任何测试。要修复,请添加
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
而不是第二个require_once,ABSPATH将被正确设置,我可以使用WordPress API和插件的代码并编写测试用例。
答案 0 :(得分:0)
使用绝对路径是危险的。您可以使用:
require_once(get_home_path() .'wp-content\plugins\appointment-booking\includes.php');
(如果您在Windows环境中)