2016-11-16 2 views
0

Я пишу некоторые модульные тесты и изо всех сил пытаюсь захватить оставшуюся линию этой маленькой модели в Yii2.Как бы проверить эту строку в Codeception

UserSearch.php

public function search($params) 
{ 
    $query = User::find(); 

    // add conditions that should always apply here 

    $dataProvider = new ActiveDataProvider([ 
     'query' => $query, 
    ]); 

    $this->load($params); 

    if (!$this->validate()) { 
     // $query->where('0=1'); 
     return $dataProvider; // This line in tests is red and marked as not executed 
    } 

    // grid filtering conditions 
    $query->andFilterWhere([ 
     'id' => $this->id, 
     'date_added' => $this->date_added, 
     'last_login' => $this->last_login, 
    ]); 

    $query->andFilterWhere(['like', 'username', $this->username]) 

    return $dataProvider; 
} 

UserTest.php

public function testUserSearch() 
{ 
    $model = new UserSearch(); 
    expect_that($model->search(['id' => 2])); 
} 

public function testInvalidDataProvider() 
{ 
    $model = new UserSearch(); 
    expect_that($model->search(['id' => '2'])); 
} 

Второй тест проходит правильно, как !this->Validate() метод терпит неудачу как идентификатор не является целым числом, поэтому не возвращаемый оператор, отраженный как выполненный в охвате кода. что я не понимаю здесь?

+0

Пожалуйста, покажите код метода 'validate'. 'expect_that' является нечетным утверждением, что он делает? – Naktibalda

ответ

2
+0

Да, я знаю, поэтому утверждение 'if (! $ This-> validate())' корректно терпит неудачу. Так почему же это не отражено в охвате кода – Jonnny

+0

Вы должны раскомментировать эту строку // $ query-> где ('0 = 1'); – nicolascolman

Смежные вопросы