2010-10-22 3 views
1

Je cours une requête SOQL dynamique dans mon code de test d'apex, et la clause LIMIT ne fonctionne pas. Il semble cependant fonctionner quand on l'utilise dans le code de production.La limite ne fonctionne pas lors du test de Dynamic SOQL

La requête est similaire à ci-dessous. Je construis dynamiquement la clause where en utilisant quelques termes d'un formulaire.

string query = 'SELECT name, billingstreet, billingpostalcode, phone '; 
query += 'FROM Account WHERE '; 
query += '(name LIKE \'%limited%\' OR name LIKE \'%LIMITED%\') '; 
query += 'LIMIT 500'; 

List<Account> results = Database.query(query); 

System.assert(results.size() <= 500); 

Ceci peut échouer car la requête semble renvoyer bien plus de 500 enregistrements dans le test. La requête fonctionne cependant lors de l'utilisation dans une page de force visuelle.

Des pensées?

+0

Vous pouvez essayer de poster sur le tableau des développeurs Salesforce, car cela ressemble à un bogue. http://boards.developerforce.com/sforce/?category.id=developers –

+0

Merci .. Question ajoutée aux forums de discussion. – Xian

+0

J'ai mis à jour la requête pour montrer que nous utilisions des caractères génériques dans la requête. Cela pourrait être une autre cause – Xian

Répondre

0

J'ai testé SOQL dynamique dans la méthode de test avec une clause limit et cela a fonctionné correctement sans aucun problème.

Je vous suggère de mettre un certain system.debug avant l'assertion pour vérifier la taille de la liste des comptes retournés.

Espérons que vous arriverez à savoir ce qui se passe.

+0

Quand je system.debug le results.size() il renvoie plus de 6000 enregistrements malgré la LIMIT 500. – Xian

Questions connexes