含有Session的测试

3.4 版本
维护中的版本

Symfony在设计之初就决意完整支持代码的“可测试”能力。为了让你的代码利用session来轻松测试,我们提供了两种不同的mock存储架构(mock storage mechanisms)以满足单元测试和功能测试。

在测试代码中使用session是一种技巧,因为PHP的(session)工作流状态是全局的,同一PHP进程中不可能有多个并发session。

Mock storage engines模拟了PHP的session工作流,毋需真正启动一个session,令你在测试过程中无有障碍。你可以在同一PHP进程中运行多个(session)实例。

Mock storage drivers不对系统全局的session_id()session_name()进行读写操作。如有需求,框架提供了以下方法用于模拟:

单元测试 

对于单元测试来说没有必要对session读写,你应该使用MockArraySessionStorage来替换默认的storage engine(session存储引擎):

1
2
3
4
use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
use Symfony\Component\HttpFoundation\Session\Session;
 
$session = new Session(new MockArraySessionStorage());

功能测试 

对于功能测试来说你可能会在不同的PHP进程中对session数据进行读写,此时只需简单修改存储引擎到MockFileSessionStorage

1
2
3
4
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage;
 
$session = new Session(new MockFileSessionStorage());

本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。

登录symfonychina 发表评论或留下问题(我们会尽量回复)