2

正しく機能しているソート機能をテストしようとしていますが、モックオブジェクトで機能をテストできないようです:

これはテストされる機能です:

public function getUsersSorted($users = null)
{
    if ($users === null) {
        if ($this->sortedUsers != null) {
            return $this->sortedUsers;
        }
        $this->sortedUsers = $this->getUsersSorted($this->getActiveUsers());

        return $this->sortedUsers;
    }

    $iterator = $users->getIterator();
    $that = $this;
    $iterator->uasort(
        function ($a, $b) use ($that) {
            return ($that->getPointsFor($a) > $that->getPointsFor($b)) ? -1 : 1;
        }
    );
    $users = new ArrayCollection(iterator_to_array($iterator, false));

    return $users;
}

getPointsFor 関数は次のようになります。

    public function getPointsFor(User $user)
{
    $points = 0;
    // GameBets
    foreach ($this->getBets($user) as $bet) {
        $points += $bet->getPoints();
    }
    // Questions
    foreach ($this->getQuestions() as $q) {
        $bet = $this->getQuestionBet($q, $user);
        $points += $bet->getPoints();
    }

    return $points;
}

このエラー メッセージの原因となるコード内の変更はありません。

ここでの更新 は、他のすべての呼び出された関数です。副作用は見られませんが、間違っている可能性があります。

public function getBets(User $user = null)
{
    if ($user === null) {
        return $this->bets;
    }
    $c = Criteria::create()
        ->where(Criteria::expr()->eq('user', $user));

    return $this->bets->matching($c);
}

これは私のベット内の getPoints です:

public function getPoints(){
    if(!isset($this->points)){
       // This part is never used, since the points are already set in the test
       $this->points = $this->reloadPoints();
    }
     return $this->points;
}

getQuestion と getQuestionbet も私のテストケースには適用できません。

4

0 に答える 0