用PHP测试cookie的单元

chi*_*org 4 php cookies unit-testing http setcookie

依赖于会话/ cookie信息的单元测试功能的默认做法是使用抽象库.但是如果我想编写和单元测试这个抽象库呢?PHP setcookie函数的文档说明cookie将在下一个请求时可用.使用命令行工具进行测试,没有"请求"这样的东西.那么如何才能对正确的cookie设置进行单元测试呢?

我想测试setcookie我的抽象库是否正确设置了函数的所有参数.这些参数将根据某些条件和方法调用进行设置.

我能想到的唯一解决方案是setcookie使用runkit扩展模拟函数,我不想安装它.其他想法?

chi*_*org 11

我发现了另一个非常简单的解决方案:围绕PHP setcookie函数的类包装器非常简单,不需要进行单元测试:

/**
 * Wrapper around setcookie function for better testability
 */ 
class Cookiesetter {
  public function setcookie($name, $value = "",  $expire = 0,  $path = "", 
    $domain = "", $secure = false, $httponly = false) {
    return setcookie($name, $value,  $expire, $path, $domain, $secure, $httponly);
  }
}
Run Code Online (Sandbox Code Playgroud)

setcookie然后可以模拟该方法.这有额外的好处,我可以实现其他方法,如expireCookie.

  • "这么简单,不需要进行单元测试".哎哟! (14认同)