我有很旧的遗留代码。在开始重构之前,我想对代码进行一些单元测试。但糟糕的是,文件依赖于" require_once"陈述(hovewer,我要测试的功能是孤立的)。
如果我无法模拟" require_once"那么我就无法编写正常的测试。言。
我使用Kahlan框架进行测试。那么有可能模仿这样的陈述吗?如果是,那怎么样?
答案 0 :(得分:1)
这是不可能的。
然而,我已经为Kahlan制作了一个插件,允许"提取"来自任何文件的函数并跳过所有其他代码。它不会允许完全"模拟"语句,但它将允许测试孤立的函数。我做了拉取请求,如果它不被接受,我将制作一个单独的包装作曲家包并更新这个答案。
可以在此处找到更改:
https://github.com/lamp-of-god/kahlan/tree/isolator-plugin
使用示例:
文件:
<?php
require_once 'something'; // This string will be "skipped" on test
do_something(); // This string too
function test()
{
return 42;
}
使用插件测试此文件:
<?php
use Kahlan\Plugin\Isolator;
Isolator::isolate(dirname(__DIR__).'/../test.php');
describe('test()', function() {
it('returns 42', function() {
expect(test())->toBe(42);
});
});