WordPress插件带有依赖项的phpunit测试

WordPress插件带有依赖项的phpunit测试,wordpress,unit-testing,woocommerce,phpunit,wp-cli,Wordpress,Unit Testing,Woocommerce,Phpunit,Wp Cli,我怀疑这可能是一个重复的问题或是一个非常简单的答案,但我已经搜索了我能找到的每一个术语,没有任何结果 这真的很简单如何对依赖于其他插件的WordPress插件进行单元测试? 我目前正在开发一个WooCommerce插件,该插件将包含一个支付网关,它必须扩展WooCommerce插件中包含的WC\u支付网关。所以我需要WordPress来加载和激活WooCommerce。我试过了 手动仅包括/plugins/woocommerce/woocommerce.php。由于尚未创建数据表,因此提供db错

我怀疑这可能是一个重复的问题或是一个非常简单的答案,但我已经搜索了我能找到的每一个术语,没有任何结果

这真的很简单如何对依赖于其他插件的WordPress插件进行单元测试?

我目前正在开发一个WooCommerce插件,该插件将包含一个支付网关,它必须扩展WooCommerce插件中包含的
WC\u支付网关。所以我需要WordPress来加载和激活WooCommerce。我试过了

  • 手动仅包括
    /plugins/woocommerce/woocommerce.php
    。由于尚未创建数据表,因此提供db错误
  • 运行
    激活插件(“”)“muplugins\u loaded”
    操作中执行code>。给出与上述相同的错误
  • 克隆WooCommerce dev.repo并在WooCommerce中包含
    test/bootstrap.php
    。给我一个PHP致命错误:
    wp content/plugins/woocommerce/tmp/wordpress tests lib/includes/functions.PHP):无法打开流:在/home/…
  • 正在运行
    /plugins/woocommerce/tests/bin/install.sh
    。给我
    PHP致命错误:无法重新声明tests\u add\u filter()(以前在…
  • 上述各项的组合
  • 有人知道我做错了什么吗?我真的不想放弃单元测试,但目前似乎是唯一的选择,因为我的插件中有一些类是致命的b/c,即类型提示支付网关,这显然迫使自动加载程序获得它

    提前感谢:)

    我最终在一个特殊文件夹中创建了“依赖项替换”(mock)类,该文件夹仅注册到测试环境中的自动加载程序(不是dev/prod,以防止与实际类发生冲突)


    我认为这是一个非常难看的解决方案,因为即使我们所依赖的api改变并破坏了应用程序,测试也会通过——破坏了在imo中进行单元测试的全部意义。但是你知道。。爱情和战争都是公平的哈哈

    我花了好几个小时想弄明白这一点,最后终于到了那里。把这个答案留给其他人看

    本指南很好地解释了该过程:


    基本上,您可以将整个woocommerce测试套件复制到扩展文件夹中,并对引导文件中的初始化进行一些调整,以便将woocommerce和扩展一起加载

    快速和肮脏,你可以包括wp-load.php和正确的配置变量,你是黄金。对于简单的测试,我会查看wpcli来为测试场景加载激活插件。