Как мне проверить эту строку в Codeception

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

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() не работает, поскольку id не является целым числом, почему оператор return не отображается как выполненный в покрытии кода. что я здесь недопонимаю?


person Jonnny    schedule 16.11.2016    source источник
comment
Покажите, пожалуйста, код метода validate. expect_that - странное утверждение, для чего оно?   -  person Naktibalda    schedule 17.11.2016


Ответы (1)


person uldis    schedule 16.11.2016
comment
Да, я знаю, поэтому утверждение if(!$this->validate()) неверно. Так почему же это не отражено в покрытии кода? - person Jonnny; 16.11.2016
comment
Вы должны раскомментировать эту строку // $ query- ›where ('0 = 1'); - person nicolascolman; 31.10.2017