Thi*_*ico 6 phpunit unit-testing const mocking
是否可以使用PHPUnit向模拟添加类常量?
这是一个例子:
class SomeTest extends PHPUnit_Framework_TestCase {
public function setUp() {
$mock = $this->getMock( 'SomeClass' );
// Here I'd like to add a constant to $mock; something like
// $mock::FOOBAR;
}
}
Run Code Online (Sandbox Code Playgroud)
你们中的任何人都知道我怎么能让这种行为起作用?
谢谢!
这个问题已经有一段时间没有答案了,但我遇到了同样的问题。这似乎不可能;然而,至少有一种肮脏的解决方法:
在你的测试文件中
<?php
class SomeClass {
const FOOBAR = 'foobar';
}
class SomeTest extends PHPUnit_Framework_TestCase {
public function setUp() {
$mock = $this->getMock( 'SomeClass' );
}
}
// tests
?>
Run Code Online (Sandbox Code Playgroud)
然后,您使用模拟对象来实现模拟功能,并以与最初相同的方式使用类常量。例如:
// Call a method on mocked object
// (would need to add this method to your mock, of course)
$mock->doSomething();
// Use the constant
$fooBar = SomeClass::FOOBAR;
Run Code Online (Sandbox Code Playgroud)
这很脏,所以我确信如果您使用某种尝试加载实际SomeClass类的自动加载,事情可能会变得非常混乱,但如果您不加载原始的SomeClass.
我绝对有兴趣听到其他解决方案,并获得一些关于这到底有多脏的反馈。
| 归档时间: |
|
| 查看次数: |
3315 次 |
| 最近记录: |