這個賞金已經結束。此問題的答案有資格獲得 250聲望賞金。賞金寬限期在19 小時后結束。 Gianluigi Zane Zanettini 博士希望引起對這個問題的更多關注。
當 PHPUnit 9.5.11 測驗失敗時,我正在嘗試顯示自定義訊息(正在測驗的 URL)。在我的 Symfony 4.4 應用程式中。
課程很簡單:
class BaseTestCase extends PantherTestCase
在我的測驗中,我有:
$client = static::createPantherClient();
$crawler = $client->request('GET', $url);
$this->assertSelectorExists('.some-class', $url); // <- this should display the tested $url, since the second argument is supposed to be the message to show on failure
但是當測驗失敗時,我得到的只是:
- App\Tests\PropertyListingTest::testListingWithFullQueryString 與資料集#0 ('') Facebook\WebDriver\Exception\NoSuchElementException:沒有這樣的元素:無法找到元素:{“方法”:“css 選擇器”,“選擇器”:“。 some-class"}(會話資訊:headless chrome=97.0.4692.71)
這里發生了什么?如果我運行這個:
$this->assertEquals("a", "b", "!!!!TEST FAILED!!!!");
它按預期作業:
!!!!測驗失敗!!!!斷言兩個字串相等時失敗。--- 預期 實際 @@ @@ -'a' 'b'
uj5u.com熱心網友回復:
這種行為對我來說實際上看起來像一個錯誤。
因為如果你看一下assertSelectorExists內部是做什么的(見下文)......
public static function assertSelectorExists(string $selector, string $message = ''): void
{
$client = self::getClient();
if ($client instanceof PantherClient) {
$element = self::findElement($selector); // NoSuchElementException is thrown here
self::assertNotNull($element, $message); // so the message is never used
return;
}
self::assertNotEmpty($client->getCrawler()->filter($selector));
}
...您會注意到,findElement如果沒有找到任何元素,它會回傳 null。但問題是findElement在這種情況下不回傳 null ,而是引發例外。
為了解決這個問題,我會像這樣制作自己的 assertSelectorExists 版本:
$client = static::createPantherClient();
$crawler = $client->request('GET', $url);
$this->assertSelectorExistsSafe($client, '.some-class', $url);
protected function assertSelectorExistsSafe($client, $selector, $message)
{
try {
$element = $client->findElement($client->createWebDriverByFromLocator($selector));
} catch (\Facebook\WebDriver\Exception\NoSuchElementException $e) {
$element = null;
}
self::assertNotNull($element, $message);
}
uj5u.com熱心網友回復:
如果我明白你的意圖
$client = static::createPantherClient();
$response = $client->request('GET', $url);
$crawler = $response->getContent();
現在crawler變數保存了您從url變數中獲得的實際資料
如何繼續測驗此資訊取決于您
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/417805.html
標籤:
上一篇:如何在Symfony5.3中管理Messenger組件記憶體
下一篇:底部床單在活動中沒有膨脹
