2016-04-15 76 views
3

我正在编写一些功能测试以测试我的应用程序的登录系统。我尝试了以下方法使用fillField(),但无法让它适用于我。如何使fillField()为功能测试工作Codeception + Laravel 5.2

$I->fillField(['id' => 'loginEmail'], '[email protected]'); 

$I->fillField("//input[@id='loginEmail']", '[email protected]'); 

之后,当我试图运行seeInFormFields()方法,它给我下面的错误:

Step I see in form fields "form[name=loginForm]",{"email":"[email protected]","password":123456} 
Fail Failed asserting that `[email protected]` is in input's value: array (
    0 => '', 
) 
Failed asserting that an array contains '[email protected]'. 

点要注意的是,我上有注册表格相同的页面有相同的name,这就是为什么我不得不使用ID

任何帮助或建议将不胜感激。

使用HTML程式码

更新下方是我的HTML表单代码

<form name="loginForm" class="" method="POST" action="https://domain/en-us/checkout/login"> 
     <div class="col-sm-12 wrapper generic-form collapse-form" ng-controller="mobileController"> 
      <fieldset> 
       <legend 
        class="legend-login"> 
        I have an account 
       </legend> 
       <div class="collapse-panel"> 
        <div class="col-xs-12 control-group"> 
         <div class="row form-group" ng-class="{ 'has-error' : loginForm.email.$error.required && submitted }"> 
          <div class="col-sm-4 col-xs-12 text-right"> 
           <label for="email">E-Mail</label> 
          </div> 
          <div class="col-sm-8 col-xs-12"> 
           <input 
             name="email" 
             type="email" class="form-control" 
             id="loginEmail" 
             required> 
           <small class="ico-buttons ico-error red"> 
            Mandatory 
           </small> 
          </div> 
         </div> 
        </div> 
        <div class="col-xs-12"> 
         <div class="row form-group" ng-class="{ 'has-error' : loginForm.password.$error.required && submitted }"> 
          <div class="col-sm-4 col-xs-12 text-right"> 
           <label for="password">Password</label> 
          </div> 
          <div class="col-sm-8 col-xs-12"> 
           <input name="password" 
             type="password" 
             class="form-control" 
             id="password" 
             required> 
           <small class="ico-buttons ico-error red"> 
            Mandatory 
           </small> 
          </div> 
         </div> 
        </div> 
        <div class="col-xs-12"> 
         <div class="row form-group"> 
          <div class="col-xs-12 col-sm-8 col-sm-offset-4"> 
           <input type="button" value="Login" name="submitWelcomeLoginForm"> 
          </div> 
         </div> 
           <br> 
           <a href='https://domain.com/' class='pull-right'>Forgot Password?</a> 
        </div> 
       </div> 
      </fieldset> 
     </div> 
     <div class="clearfix"></div> 
    </form> 
+0

你可以添加你的表单的HTML问题? – Naktibalda

+0

@Naktibalda你看看我的html代码吗? –

回答

0

第一个参数是该领域

$I->fillField('email', '[email protected]'); 

你可以在这里找到很多测试脚本的字符串名称:https://github.com/satrun77/tinyissue/blob/master/tests/functional

测试脚本中使用fillField https://github.com/satrun77/tinyissue/blob/master/tests/functional/CrudIssueCest.php

+0

只需看看http://codeception.com/docs/modules/Laravel5#fillField。我也可以像使用数组一样使用它,并使用其他参数吗? –

0

你的问题不在于fillField不起作用,
它是seeInFormFields没有看到填充的值,它只能看到出现在页面的原始HTML值。

+0

你的意思是? –

+0

不使用seeInFormFields,你有提交表单的问题吗? – Naktibalda

+0

是的,我已经尝试过,并有错误。 –