代码之家  ›  专栏  ›  技术社区  ›  Colonel Sponsz

在PHPUnit中测试表单输入

  •  5
  • Colonel Sponsz  · 技术社区  · 17 年前

    $_GET $_POST PHPUnit ?

    我有一个清理输入的类,希望在处理虚假数据时检查它是否正常工作。是否有一种简单的方法来设置表单变量 菲普尼特 或者我应该把验证传递给一个二级类/函数,这些二级类/函数被提供表单变量,以便间接地测试它们吗?

    1 回复  |  直到 11 年前
        1
  •  16
  •   Paul Mitchell    17 年前

    Dependency injection . 简而言之,你应该给你的代码提供它所需要的,而不是让它得到它所需要的数据。。。下面是一个例子:

    没有依赖注入的示例

    function sanitize1() {
      foreach($_POST as $k => $v) {
        // code to sanitize $v
      }
    }
    
    sanitize1();
    

    依赖注入示例

    function sanitize2(array &$formData) {
      foreach($formData as $k => $v) {
        // code to sanitize $v
      }
    }
    
    sanitize2($_POST);
    

    sanitize2() 您选择的关联数组;你已经注入了依赖性。鉴于 sanitize1() 加上 $_POST . 美元邮政 $_GET 美元 美元邮政 但在单元测试中,您需要硬编码一些预期的数据。

    function testSanitize() {
      $fakeFormData = array ('bio' => 'hi i\'m arin', 'location' => 'San Francisco');
      sanitize($fakeFormData);
      // assert something
    }
    
    推荐文章