The table aliasing with {} should definitely work just fine in SimpleTest, or else nothing in Drupal would work. You probably have some other error. Do your queries work in PHPMyAdmin or in the MySQL command line, in the regular database where you know the table names??

That said, there's a global $db_prefix that gives you the database prefix (see settings.php and the db_prefix_tables function in includes/database.inc).

   --Jennifer

David Thibault wrote:
Is there a way to figure out the table prefix that Simpletest generates at 
runtime?  I am trying to run a test that does a bunch of inserts, then I need 
to figure out how many rows were created in the table.  However, I can't query 
the table because simpletest changes the name of it every time.  Also, I tried 
{table_name} instead of table_name in the query but it didn't work (line 
numbers inserted below to help with reading the error message later):

21 public function test_sync () {
22    
require_once(drupal_get_path('module','compoundmanagement').'/compoundmanagement.inc');
23    $result = db_query('select count(objdid) as count from {cpd_compounds}');
24    $row = $result->db_fetch_object($result);
25    $this->pass('There are '.$row->count.' compounds in cpd_compounds');
26    $this->drupalGet('sync_cpds',array('absolute' => TRUE));
27    $result = db_query('select count(objdid) as count from {cpd_compounds}');
28    $row = $result->db_fetch_object($result);
29    $this->pass('There are now '.$row->count.' compounds in cpd_compounds');
30    $this->assertEqual($row->count,1313,"CPD_COMPOUNDS should have 1313 
rows.");
31 }

The test above threw this error:

An error occurred.
/batch?id=18&op=do
<br />
<b>Fatal error</b>: Call to a member function db_fetch_object() on a non-object in 
<b>C:\wamp\www\drupal\sites\all\modules\compoundmanagement\compoundmanagement.test</b> on line 
<b>24</b><br />

--
Jennifer Hodgdon * Poplar ProductivityWare
www.poplarware.com
Drupal, WordPress, and custom Web programming

Reply via email to