I have this method that I would like to unit test. Since it's creating the
Sql object inside the method, I can't mock it up.

Initially I thought about making Sql be an instance property except that
I'd have to reset it every time I use it in other methods and this will
most likely lead to hard to debug errors.

What's the common pattern for testing these kinds of methods?

Thanks,
Julian

Here's a link to the gist in case this syntax highlighter screws things up:
https://gist.github.com/poisa/7898032

    public function getConfigFromDb()
    {
        if (!is_null($this->configInDb)) {
            return $this->configInDb;
        }

        $sql = new Sql($this->getSlaveDbAdapter());

        $select = $sql->select()
                      ->from('languages');

        $statement = $sql->prepareStatementForSqlObject($select);
        $results   = $statement->execute();
        $results->buffer();

        $return = array();

        foreach ($results as $r) {
            $return[] = $r;
        }

        $this->configInDb = $return;

        return $return;
    }

Reply via email to