Using a string search:
$this->loadPageByUrl('/collections')
->assert()->responseContains('logo.jpg')
$this->loadPageByUrl('/collections')
->assert()->pageTextContains('Welcome home!')
Using CSS selectors:
$this->loadPageByUrl('/search')
->assertElementExists('.views-widget-filter-id')
public function testBlogPage() {
$this->loadPageByUrl('/blog')->assert()->statusCodeEquals(200);
}
https://json-schema.org/latest/json-schema-validation.html#rfc.section.6.3.3
The client tests provide the means of validation using JSON Schema. You indicate where your schema files are located in phpunit.xml using the custom key jsonschema
. Child nodes of directory
are relative to phpunit.xml; you may use globs; you may have more than one directory
node.
<phpunit>
<jsonschema>
<directory>../web/sites/all/modules/custom/*/tests/schema</directory>
</jsonschema>
</phpunit>
Then to validate an URL do something like the following:
This example shows how load an endpoint that returns XML and validate that using a JSON Schema; then it checks for specific values in the XML.
public function testXMLEndpoint() {
$this->loadXmlByUrl('api/1/some/endpoint')
->assertResponseMatchesSchema('resource.json');
$this->assertSame(123, (int) $this->xml->id);
$this->assertSame('name', (string) $this->xml->name);
}