मैं कार्यात्मक परीक्षण चलाने के लिए phpunit का उपयोग कर रहा हूं लेकिन मुझे कुछ रूपों में समस्या है। समस्या यह है कि phpunit जेएस के बारे में पता नहीं है, और मेरे पास एक गतिशील रूप से आबादी वाला चयन बॉक्स है जिसमें jQuery की आवश्यकता है।Symfony2 कार्यात्मक परीक्षण: सीधे फॉर्म डेटा पास करना
तो मुझे सीधे फॉर्म डेटा पास करने की आवश्यकता है।
// Directly submit a form (but using the Crawler is easier!)
$client->request('POST', '/submit', array('name' => 'Fabien'));
जब मैं इस उदाहरण का इस्तेमाल किया नियंत्रक प्रपत्र डेटा के किसी भी प्राप्त नहीं किया था: 'किताब' निम्न उदाहरण देता है। जानबूझकर मैंने देखा कि सरणी कुंजी 'नाम' को पार करना मेरी स्थिति में सही नहीं था क्योंकि मुझे फॉर्म कोड की आवश्यकता थी जो मेरे कोड में 'टाइम्सशीट' थी। तो मैंने कुछ ऐसा करने की कोशिश की:
$client->request('POST', '/timesheet/create', array('timesheet[project]' => '100'));
लेकिन यह अभी भी काम नहीं करता है।
$postData = $request->request->get('timesheet');
$project = $postData['project'];
यह काम नहीं किया और $ परियोजना खाली रह गए: नियंत्रक में मैं समझने के लिए क्या हो रहा था और क्या हुआ अगर कुछ भी प्राप्त किया जा रहा था की कोशिश की। लेकिन अगर मैं निम्नलिखित कोड का इस्तेमाल किया मैं मूल्य मिल गया:
$project = $request->request->get('timesheet[project]');
लेकिन स्पष्ट रूप से है कि नहीं है कि मैं क्या चाहता हूँ। कम से कम हालांकि मैं देख सकता हूं कि कुछ पोस्ट डेटा है। मेरे अंतिम प्रयास परीक्षा पद्धति में निम्नलिखित कोशिश करने के लिए किया गया था:
$this->crawler = $this->client->request('POST', '/timesheet/create/', array('timesheet' => array(project => '100'));
इसलिए मैं अनुरोध पैरामीटर सरणी के पहले तत्व के रूप में एक 'timesheet' सरणी पारित करने के लिए कोशिश कर रहा हूँ। लेकिन इस के साथ मैं त्रुटि मिलती है:
Symfony\Component\Form\Exception\UnexpectedTypeException: Expected argument of type "array", "string" given (uncaught exception) at /mnt/hgfs/pmt/src/vendor/symfony/src/Symfony/Component/Form/Form.php line 489
मैं बहुत खुश अगर किसी को क्या कैसे मैं इस काम करके करना चाहिए के बारे में 'किताब' में है पर विस्तार कर सकते हैं होगा। नियंत्रक में
फार्म बाँध:
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()) {
$postData = $request->request->get('timesheet');
$project = $postData['project'];
$timesheetmanager = $this->get('wlp_pmt.timesheet_db_access');
$timesheetmanager->editTimesheet($timesheet);
return $this->redirect($this->generateUrl('timesheet_list'));
}
}
आपकी आखिरी कोशिश मेरे लिए ठीक लग रहा है देखते हैं। कृपया अपने नियंत्रक का हिस्सा पेस्ट करें जहां आप फॉर्म को बांधते हैं। इसके अलावा, क्या आपने कार्यात्मक परीक्षण (http://symfony.com/doc/2) पर प्रलेखन अध्याय पढ़ा था।0/पुस्तक/testing.html # रूपों)? आप फॉर्म तत्व में हेरफेर करने का प्रयास कर सकते हैं। –
मैंने अब प्रासंगिक नियंत्रक भाग जोड़ा है। मैंने कुछ समय के लिए कार्यात्मक परीक्षण से संबंधित पुस्तक में अध्याय के माध्यम से पढ़ा है जिसे मैं याद कर सकता हूं। जब आप फॉर्म तत्व में हेरफेर करने का सुझाव देते हैं, तो क्या आप फॉर्म में कार्यात्मक परीक्षण में डेटा जोड़ना चाहते हैं? यह संभव नहीं है क्योंकि फ़ॉर्म में गतिशील चयन है जो AJAX का उपयोग करके पॉप्युलेट किया गया है। तो यह खाली है और कुछ भी नहीं चुना जा सकता है, इसलिए मुझे नियंत्रक को फॉर्म सामग्री पोस्ट करने की आवश्यकता है। – DanF7