gpt4 book ai didi

php - 用先知 mock 一个方法

转载 作者:行者123 更新时间:2023-12-03 23:47:10 27 4
gpt4 key购买 nike

假设有一个方法

public function updateTimestamp($sessionId, $data)
{
return $this->memcached->touch($sessionId, time() + $this->ttl);
}

我想测试。 Infection更改 + time() + $this->ttl - 而且我所有的测试都还在通过。所以我想做一个测试来模拟 Memcached 对它的影响,并有条件地返回 true/ false基于传递给它的第二个参数。

所以做这样的事情:
    // $ttl is set;
$memcachedMock
->touch(
'sessionId',
$certainValuePassedToTouch
)
->willReturn(
$certainValuePassedToTouch >= time() + $ttl
? true
: false
)
;

现在有两个问题:
  • 我不知道如何为传递给被模拟的方法的任意整数参数设置这样的条件
  • 基于 time() 似乎非常不可靠,那么如果 time() 用于方法本身,我如何可靠地测试它?
  • 最佳答案

    也许你可以看看这个工具:

  • https://github.com/php-mock/php-mock
  • https://github.com/php-mock/php-mock-phpunit

  • 基于 PHP 的命名空间回退策略 ( https://www.php.net/manual/en/language.namespaces.fallback.php ),它允许模拟 php 原生函数,如 time()、date() 等。

    关于php - 用先知 mock 一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61976480/

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