我怀疑这是一个重复的问题,或者是一个回答非常简单的问题,但我已经搜索了我能提出的每一个条款而没有任何结果。
这很简单; 如何对依赖于其他插件的WordPress插件进行单元测试?
我目前正在开发一个包含支付网关的WooCommerce插件,该插件必须扩展WooCommerce插件中包含的WC_Payment_Gateway
。所以我需要WordPress 加载和激活 WooCommerce。我试过了;
/plugins/woocommerce/woocommerce.php
。由于尚未创建WooCommerce表,因此给出了db错误。activate_plugin( '<woocommerce plugin path>' );
操作上运行"muplugins_loaded"
。给出与上面相同的错误。test/bootstrap.php
。给我一个PHP致命错误:wp-content/plugins/woocommerce/tmp/wordpress-tests-lib/includes/functions.php): failed to open stream: No such file or directory in /home/...
/plugins/woocommerce/tests/bin/install.sh
。给了我PHP Fatal error: Cannot redeclare tests_add_filter() (previously declared in ...
任何人都知道我做错了什么?我真的不想放弃单元测试,但目前似乎是唯一的选择,因为我在我的插件中使用某些类来致命,即类型暗示支付网关显然迫使自动加载器获取它。
提前致谢:)
答案 0 :(得分:1)
我最终创建了&#34;依赖替代&#34; (模拟)特殊文件夹中的类,它只在注册到测试环境中的自动加载器(不是dev / prod,以防止与真实类冲突)。
我认为这是一个非常难看的解决方案,因为即使我们依赖的api改变并打破了应用程序,测试也会通过 - 打破了单元测试的全部要点。但是你知道..所有在爱和战争中都是公平的哈哈
答案 1 :(得分:1)
我花了好几个小时试图解决这个问题,并最终到达那里。将此答案留给其他任何正在寻找的人。
本指南很好地解释了这个过程:https://wptheming.com/2016/01/unit-tests-for-woocommerce-extensions/
基本上,您可以将整个woocommerce测试套件复制到您的扩展文件夹中,并对引导程序文件中的初始化进行一些调整,以便您一起加载woocommerce和您的扩展程序。