Ich versuche, einen Test einzurichten, um die Anzahl eines benutzerdefinierten Beitrags in der Datenbank als ersten Schritt zu einem robusteren Test zu zählen, aber er funktioniert nicht richtig. Hier ist eine Kopie des Tests:
<?php
// codecept run wpunit RWA:CourseModelsTest
namespace RWA;
require_once get_template_directory() . '/models/course.php';
class CourseModelsTest extends \Codeception\TestCase\WPTestCase {
/**
* @var \WpunitTester
*/
protected $tester;
protected function _before() {
}
protected function _after() {
}
// tests
public function testSomeFeature() {
$query = \Course::count();
$this->assertEquals( 53, $query );
}
}
In meinem Modell sieht die Funktion so aus
public static function count() {
$args = array(
'posts_per_page' => -1,
'offset' => 0,
'post_type' => 'courses',
'suppress_filters' => true,
);
$query = new \WP_Query( $args );
return count( $query->posts );
}
Aber wenn es zur Behauptung kommt, heißt es, dass 53 nicht gleich 0 ist.
Lokal betreibe ich eine Multisite-WordPress-Instanz, aber ich bin mir nicht sicher, ob sich dies auf das Setup auswirkt oder ob dies etwas Zusätzliches ist, das ich in der Codeception konfigurieren muss. Hat jemand Ideen?
Update: Hier ist eine Kopie einiger aktueller Konfigurationsdateien, die ich habe:
paths:
tests: tests
output: tests/_output
data: tests/_data
support: tests/_support
envs: tests/_envs
actor_suffix: Tester
modules:
config:
WPDb:
dsn: 'mysql:host=%DB_HOST%;dbname=%DB_NAME%'
user: '%DB_USER%'
password: '%DB_PASSWORD%'
dump: 'tests/_data/dump.sql'
populate: true #import the dump before the tests
cleanup: false #import the dump between tests
url: '%WP_URL%'
urlReplacement: true #replace the hardcoded dump URL with the one above
tablePrefix: '%TABLE_PREFIX%'
waitlock: 0
WPBrowser:
url: '%WP_URL%'
adminUsername: '%ADMIN_USERNAME%'
adminPassword: '%ADMIN_PASSWORD%'
adminPath: '%WP_ADMIN_PATH%'
WPFilesystem:
wpRootFolder: '%WP_ROOT_FOLDER%'
plugins: '/wp-content/plugins'
mu-plugins: '/wp-content/mu-plugins'
themes: '/wp-content/themes'
uploads: '/wp-content/uploads'
WPLoader:
wpRootFolder: "%WP_ROOT_FOLDER%"
dbName: "%TEST_DB_NAME%"
dbHost: "%TEST_DB_HOST%"
dbUser: "%TEST_DB_USER%"
dbPassword: "%TEST_DB_PASSWORD%"
tablePrefix: "%TEST_TABLE_PREFIX%"
domain: "%WP_DOMAIN%"
adminEmail: "%ADMIN_EMAIL%"
title: "Test"
theme: retirement-wealth-academy
plugins: ['']
activatePlugins: ['']
WPWebDriver:
url: '%WP_URL%'
adminUsername: '%ADMIN_USERNAME%'
adminPassword: '%ADMIN_PASSWORD%'
adminPath: '%WP_ADMIN_PATH%'
capabilities:
browserName: "chrome"
javascriptEnabled: true
webStorageEnabled: true
nativeEvents: true
extensions:
enabled:
- Codeception\Extension\RunFailed
commands:
- Codeception\Command\GenerateWPUnit
- Codeception\Command\GenerateWPRestApi
- Codeception\Command\GenerateWPRestController
- Codeception\Command\GenerateWPRestPostTypeController
- Codeception\Command\GenerateWPAjax
- Codeception\Command\GenerateWPCanonical
- Codeception\Command\GenerateWPXMLRPC
- Codeception\Command\DbSnapshot
- tad\Codeception\Command\SearchReplace
params:
- .env
Und für meine spezielle Suite
actor: WpunitTester
modules:
enabled:
- WPLoader
- \Helper\Wpunit
- WPDb
Ich ziele nicht auf die richtige Datenbank ab, und ich weiß nicht, was ich falsch mache. Ich habe eine useBlog-Methode in den Moduldateien von wploader und eine Multisite-Option gefunden, aber ich habe Probleme, sie dazu zu bringen, das zu tun, was ich will – wp_query auf Blog 2 über eine Klasse (die Klasse im Testing) verwenden.
Es ist eine Weile her für mich, aber ich denke, Sie sollten zurückkehren post_ zählen
return $query->post_count;
aus Ihrer count()-Funktion– Jamie_D
18. Oktober 2018 um 21:49 Uhr
Guter Vorschlag, fertig =)
– Stan Wielga
19. Oktober 2018 um 4:20 Uhr