/ / सिम्फनी क्रॉलर: यह कैसे जांचना है कि किसी विशेष पृष्ठ का लिंक मौजूद है - php, symfony, phpunit, कार्यात्मक-परीक्षण

सिम्फनी क्रॉलर: यह जांचने के लिए कि किसी विशेष पृष्ठ का लिंक मौजूद है - php, symfony, phpunit, कार्यात्मक-परीक्षण

मैं कुछ कार्यात्मक परीक्षण लिख रहा हूं और मैं यह सत्यापित करना चाहता हूं कि यदि उपयोगकर्ता लॉग इन है तो पेज पर एडिट लिंक मौजूद है।

लिंक एक सरल है <a href="/profile/22/edit">Edit</a>.

मैं सिम्फनी के क्रॉलर घटक का उपयोग करके इसे कैसे फ़िल्टर कर सकता हूं?

एक समाधान यह है:

$this->assertEquals(1, $crawler->filter("html:contains("<a href="/profile/22/edit">")")->count());

लेकिन मैं "का उपयोग करना पसंद करता हूं, इसके बजाय, टैग चयन, इसलिए मैं यह कैसे कर सकता हूं?

उत्तर:

जवाब के लिए 2 № 1

आप क्रॉलर का उपयोग कर सकते हैं ::फ़िल्टरएक्सथ () सभी प्रकार के मानदंडों से मेल खाते HTML तत्वों की उपस्थिति या यहां तक ​​कि अनुपस्थिति की जांच करने के लिए। एक लिंक की उपस्थिति के लिए जाँच करने के लिए मैं तत्व आईडी का उपयोग करना पसंद करता हूं क्योंकि यह स्थिर रहने की सबसे अधिक संभावना है। उदाहरण के लिए, यदि आप अपने लिंक को इस प्रकार संशोधित करते हैं:

<a id="edit-profile-link" href="/profile/22/edit">Edit</a>

फिर आप इस तरह लिंक मौजूद है की जाँच कर सकते हैं:

$node = $crawler->filterXPath("//a[@id="edit-profile-link"]");
$this->assertTrue($node->count() == 1), "Edit profile link exists");

यहाँ XPath के साथ आपके द्वारा उपयोग किए जाने वाले फ़िल्टर के कुछ अच्छे उदाहरण हैं।