如何让 PHPUnit 替换我的测试方法中的类?
我有一堂课我想测试。代码如下:
class MyClass
{
function functionToTest() {
$class = new Example();
}
在PHPUnit中,我可以使用mocks/stubs来代替Example类吗?
在我的测试方法中:
class MyClassTest extends PHPUnit_Framework_TestCase {
function testFunctionTest() {
$testClass = new MyClass();
$result = $testClass->functionTest();
}
}
因此,PHPUnit 可以在这里介入并使用模拟来表示“new Example()”,而不是使用实际的“Example”类吗?
I have a class I want to test. Here is the code:
class MyClass
{
function functionToTest() {
$class = new Example();
}
In PHPUnit, can I use mocks/stubs to substitute for the Example class?
In my test method:
class MyClassTest extends PHPUnit_Framework_TestCase {
function testFunctionTest() {
$testClass = new MyClass();
$result = $testClass->functionTest();
}
}
So instead of using the actual "Example" class, can PHPUnit intervene here and use the mock to represent "new Example()" ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最好的解决方案是将
Example
实例注入到functionToTest()
方法中:然后您将能够在单元测试中模拟它:
但是如果这种方法适用于由于某些原因不适合您,请尝试使用
test_helpers
扩展提供的set_new_overload()
函数。请参阅Sebastian Bergmann 的博客了解更多信息。The best solution would be to inject an
Example
instance intofunctionToTest()
method:Then you'll be able to mock it in your unit tests:
But if this approach is for some reason not an option for you, try using
set_new_overload()
function provided by thetest_helpers
extensions. See more info in Sebastian Bergmann's blog.