【问题标题】:Yii framework unit Testing. How to mock time() and other standart functions?Yii 框架单元测试。如何模拟 time() 和其他标准函数?
【发布时间】:2011-10-29 13:46:11
【问题描述】:

我正在为我的模型编写单元测试。他们中的大多数使用许多标准函数,如 time()、date() 等。在 Yii 测试风格中模拟这些函数的最佳方法是什么?

我找到了 PHPUnit 扩展 Mockfunction,但我认为,在 Yii 中模拟函数有更优雅的方式。

请帮忙。一些例子会很令人愉快。

【问题讨论】:

  • 你看过CTestCase和相关的类吗?
  • 你必须包装这些函数来模拟它们的结果。如果您在问题中发布一些代码可能会有所帮助。

标签: php unit-testing mocking phpunit yii


【解决方案1】:

我知道这个问题很老了,但还是很有趣。

简而言之,如果您的代码中有像time() 这样的库函数,那么显然您不能按原样模拟它。您应该围绕此调用进行某种完全愚蠢的抽象,例如TimeSource->now(),并且您的 SUT 应该使用此抽象而不是直接调用库函数。这样,在您的单元测试中,您可以用任何您认为合适的方式创建的假冒替换真正的TimeSource,通过 Mockery,通过 PHPUnit 模拟,手动编写假类,您命名它。当然,这个假货应该为有问题的函数返回可控的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 2015-03-06
    • 2015-09-15
    • 2018-07-28
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 2011-08-17
    相关资源
    最近更新 更多