gpt4 book ai didi

php - SimpleTest 模拟问题

转载 作者:行者123 更新时间:2023-11-28 20:19:28 24 4
gpt4 key购买 nike

我正在编写一些测试用例,并且我有一个使用 Mock 对象的测试用例。我需要检查是否从另一个类方法调用了两个类方法。这是我所做的:

首先我生成了模拟:

Mock::generate('Parser');

然后,在我的测试中我调用了:

$P = new MockParser();

$P->expectOnce('loadUrl', array('http://url'));
$P->expectOnce('parse');

$P->fetchAndParse('http://url');

我的实现代码如下:

public function fetchAndParse($url) {
$this->loadUrl($url);
$this->parse();
}

而且 loadUrl 和 parse() 方法肯定存在。我的测试有两次失败,都告诉我“[loadUrl] 的预期调用次数为 [1] 得到了 [0]”。我不知道发生了什么 - 正在从该函数调用方法!

谢谢,

杰米

最佳答案

虽然我的经验是在 .NET 世界中使用模拟框架,但我认为您尝试做的事情是不正确的。

当被要求为类创建模拟时,任何模拟框架都会为该类中的所有方法生成“ stub ”。这包括方法 fetchAndParse。因此,当您在模拟对象 $P 上调用 fetchAndParse 时,不会调用 loadUrl 和 parse 方法。您真正在做的是调用“ stub ”fetchAndParse 方法。

我在 PHP 方面并没有真正的经验,所以我不想尝试修复您的测试。希望其他人可以做到这一点。

关于php - SimpleTest 模拟问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/903743/

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