gpt4 book ai didi

unit-testing - 将常量添加到 PHPUnit 中的模拟

转载 作者:行者123 更新时间:2023-12-04 04:55:40 25 4
gpt4 key购买 nike

是否可以使用 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;
}
}

你们有谁知道我怎样才能让这种行为起作用?

谢谢!

最佳答案

这个问题已经有一段时间没有答案了,但我遇到了同样的问题。这似乎是不可能的;但是,至少有一个肮脏的解决方法:

在您的测试文件中

<?php

class SomeClass {
const FOOBAR = 'foobar';
}

class SomeTest extends PHPUnit_Framework_TestCase {
public function setUp() {
$mock = $this->getMock( 'SomeClass' );
}
}

// tests

?>

然后,您将模拟对象用于模拟功能,并以与最初相同的方式使用类常量。例如:
// 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;

这很脏,所以我敢肯定,如果您使用某种尝试加载实际 SomeClass 的自动加载方式,事情可能会变得非常困惑。类,但如果您没有加载原始 SomeClass,这将“正常”工作.

我绝对有兴趣听到其他解决方案,并获得一些关于这到底有多脏的反馈。

关于unit-testing - 将常量添加到 PHPUnit 中的模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16947987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com