我们正在努力开发PHP,将我们的应用程序放在两个范围内:减少版本中的回归和错误。 该应用程序应用了一个MVC模式但没有开源框架:我们实际上使用的是一个来自symfony的大量组件的专有组件(目标是将来某个时候将所有组件移植到symfony)。
应用程序存在一些设计缺陷,因此不适合单元测试。无论如何,我们有一个可以开始的地方,这里有一些我无法解决的策略行为。
我们所有的业务方法都依赖于创建时由Dependency注入传递的路由器对象。 路由器公开了一些方法来获取和设置在路由器本身内克隆的变量,如_SERVER,_GET,_POST(设计中禁止使用全局变量)。
在下面的测试中,我在测试类实例化之前设置了SERVER和GET ..所以我希望在测试期间正确找到它们的值。 相反,他们完全是空的,当然,测试失败。
我做错了什么的任何线索?
感谢。
/**
* Test external class with valid UUID
*
*/
public function testGetClassPermissionExternal() {
$TEST_SERVER_DATA = array(
'REQUEST_URI' => 'https://sviluppo.pardgroup.com/test',
'SERVER_PORT' => 443,
'SERVER_NAME' => 'sviluppo.pardgroup.com'
);
// Due to bad design superglobal $_SERVER need to be fullfilled.
$_SERVER = $TEST_SERVER_DATA;
$this->router->setSERVER($TEST_SERVER_DATA);
$TEST_POST_DATA = array('uuid' => self::$UUID);
$this->router->setGET($TEST_POST_DATA);
$this->class = \permission::getInstace($this->router);
$test_class = array("permissionTest/external");
$this->assertFalse($this->invokeMethod($this->class, "getClassPermission", $test_class));
}