title: Call to a member function prepare() on a non-object
body: <p>This code get an error: Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\kohana\application\controllers\phactory2_test.php on line 16<br>
  It's the example from the Phactory guide: <a href="http://phactory.org/guide/#phpunit-example" rel="nofollow">http://phactory.org/guide/#phpunit-example</a></p>
  
  <pre><code>&lt;?php
  include_once('/simpletest/autorun.php');
  require_once ('/Phactory/lib/Phactory.php');
  
  /**
    * This is the function we will test.
    * It should retrieve a user from the db by id,
    * and return that user's age.
    *
    * @param PDO $pdo
    * @param int $user_id
    * @return mixed The age of the user, or false if no user
    */
  function getUserAge($pdo, $user_id)
  {
      $stmt = $pdo-&gt;prepare("SELECT * FROM `users` WHERE `id` = ?");
      $stmt-&gt;execute(array($user_id));
      $user = $stmt-&gt;fetch();
  
      if(false === $user) {
          return false;
      }
  
      return $user['age'];
  }
  
  class UserTest extends UnitTestCase
  {   
      public static function setUpBeforeClass()
      {
          // create a db connection and tell Phactory to use it
          $pdo = new PDO('mysql:host=127.0.0.1; dbname=testdb', 'root', '');
          Phactory::setConnection($pdo);
  
          /**
            * Normally you would not need to create a table here, and would use
            * an existing table in your test database instead.
            * For the sake of creating a self-contained example, we create
            * the 'users' table here.
            */
          $pdo-&gt;exec("CREATE TABLE `users` ( id INTEGER PRIMARY KEY, name TEXT, age INTEGER )");
  
          // reset any existing blueprints and empty any tables Phactory has used
          Phactory::reset();
  
          // define default values for each user we will create
          Phactory::define('user', array('name' =&gt; 'Test User $n', 'age' =&gt; 18));
      }
  
      public static function tearDownAfterClass()
      {
          Phactory::reset();
  
          // since we created a table in this test, we must drop it as well
          Phactory::getConnection()-&gt;exec("DROP TABLE `users`");
      }
  
      public function testGetUserAge()
      {
          // test that getUserAge() returns false for a nonexistent user
          $age = getUserAge(Phactory::getConnection(), 0);
          $this-&gt;assertFalse($age);
  
          // create 20 users, with ages from 1-20
          $users = array();
          for($i = 1; $i &lt;= 20; $i++) 
          {
              // create a row in the db with age = $i, and store a Phactory_Row object
              $users[] = Phactory::create('user', array('age' =&gt; $i));
          }
  
          // test that getUserAge() returns the correct age for each user
          foreach($users as $user) 
          {
              // Phactory_Row provides getId() which returns the value of the PK column
              $user_id = $user-&gt;getId();
  
              $age = getUserAge(Phactory::getConnection(), $user_id);
  
              $this-&gt;assertEqual($user-&gt;age, $age);
          }
      }
  }
  ?&gt;
  </code></pre>
  
  <p>What is the possible cause?<br>
  Thank you</p>
  
  <p>Edit: I found out the problem, Phactory::getConnection() is returning NULL for some reason</p>