代码之家  ›  专栏  ›  技术社区  ›  deceze

如何对API进行单元测试?

  •  47
  • deceze  · 技术社区  · 14 年前

    固定装置 ? 我不想对live(dev)数据库运行实际的POST/PUT请求。如何最好地模拟系统以使用临时模型,同时按原样测试堆栈的其余部分?


    测试GET请求非常容易 controller tests . 然而,对于数据操作,API非常广泛地使用HTTP报头,还解析原始XML和JSON POST/PUT数据。控制器单元测试方法仅通过设置模拟POST数据 $this->data

    3 回复  |  直到 14 年前
        1
  •  7
  •   mikemaccana    10 年前

    您应该创建mock或使用隔离框架来模拟API环境。单元测试不应该依赖于诸如internet连接、网络、端点等资源。

    如果您打算测试真正的API调用,您应该创建集成测试项目并将其用于此目的。但是请注意,集成测试通常是不可重复的,并且在每次运行时会给出不同的结果。

        3
  •  3
  •   Sadikhasan    11 年前

    The CakePHP REST documentation 他说:

    如果POST或PUT请求具有XML内容类型,那么将获取输入并将其传递给Cake的XML对象的实例,该对象被分配给控制器的$data属性。由于这个特性,并行处理XML和POST数据是无缝的:不需要更改控制器或模型代码。您所需要的一切都应该以$this->数据结束。

    尝试在调试模式下单步执行控制器代码,看看实际执行的是什么 $this->data

    至于避免实时数据库,SQLite内存数据库会更容易吗?