फेंकता मैं एक नकली वस्तु बनाने के लिए उपयोग कोशिश कर रहा हूँ और है कि मेरे Zend फ्रेमवर्क आवेदन के भीतर जब परीक्षण:PHPUnit परीक्षण डबल PHPUnit_Framework_MockObject_BadMethodCallException
public function testAskQuestionRouteWithLoggedIn()
{
// get the mock auth object, and update the registry
$auth = $this->getMockBuilder('QA_Auth')
->disableOriginalConstructor()
->getMock();
// mock methods, and return values
$auth->method('isAuthenticated')
->will($this->returnValue(true));
// update the registry
$auth = Zend_Registry::set('Auth', $auth);
// now preform the test as a logged in user
$this->dispatch('/ask');
$this->assertController('questions');
$this->assertAction('new');
// // // check the page contains a question form
$this->assertQueryCount('form#questionForm', 1);
}
... लेकिन यह एक PHPUnit_Framework_MockObject_BadMethodCallException अपवाद फेंक रहा है, लेकिन वास्तव में कुछ और ज्यादा नहीं (उदाहरण के कारण क्यों)। अगर मैं अपने आवेदन के भीतर से echo get_class($auth); exit;
करता हूं तो मैं देख सकता हूं कि यह Mock_QA_Auth_f4627b7b
वर्ग है, इसलिए कम से कम यह नकली उदाहरण उठा रहा है। लेकिन जब मैं प्रमाणीकृत विधि कहता हूं, तो यह अपवाद फेंकता है। मैं क्या गलत कर रहा हूं?
यहाँ मैं दिखाई दे रही है त्रुटि संदेश है:
$ ./vendor/bin/phpunit tests/application/controllers/QuestionsControllerTest.php
PHPUnit 4.4.2 by Sebastian Bergmann.
Configuration read from /var/www/vhosts/qasystem/qasystem/tests/application/phpunit.xml
E
Time: 277 ms, Memory: 7.50Mb
There was 1 error:
1) QuestonsControllerTest::testAskQuestionRouteWithLoggedIn
PHPUnit_Framework_MockObject_BadMethodCallException:
/var/www/vhosts/qasystem/qasystem/application/controllers/BaseController.php:331
/var/www/vhosts/qasystem/qasystem/application/controllers/BaseController.php:29
/var/www/vhosts/qasystem/qasystem/application/controllers/QuestionsController.php:14
/var/www/vhosts/qasystem/qasystem/vendor/zendframework/zendframework1/library/Zend/Controller/Action.php:133
/var/www/vhosts/qasystem/qasystem/vendor/zendframework/zendframework1/library/Zend/Controller/Dispatcher/Standard.php:281
/var/www/vhosts/qasystem/qasystem/vendor/zendframework/zendframework1/library/Zend/Controller/Front.php:954
/var/www/vhosts/qasystem/qasystem/vendor/zendframework/zendframework1/library/Zend/Application/Bootstrap/Bootstrap.php:105
/var/www/vhosts/qasystem/qasystem/vendor/zendframework/zendframework1/library/Zend/Application.php:382
/var/www/vhosts/qasystem/qasystem/tests/application/controllers/BaseControllerTestCase.php:67
/var/www/vhosts/qasystem/qasystem/tests/application/controllers/QuestionsControllerTest.php:26
कृपया जो त्रुटि आप प्राप्त कर रहे हैं उसे पोस्ट करें ... शायद अन्य के अलावा एक विधि अधिकृत है, लेकिन अस्तित्व में नहीं है। यह सुनिश्चित करने का प्रयास करें कि वास्तविक QA_class लोड हो गया है या अपने मॉक – gontrollez
बनाने से पहले ऑटोलोड करने योग्य है, मैंने परीक्षण चलाने के दौरान प्राप्त त्रुटि संदेश के साथ अपना प्रश्न अपडेट कर दिया है। मैंने परीक्षण से '$ auth = new QA_Auth()' उदाहरण बनाने के लिए बस कोशिश की है और यह पुष्टि कर सकता है कि कक्षा लोड हो रही है, इसलिए निश्चित रूप से दिखाई दे रहा है। – Martyn
ठीक है, थोड़ा अजीब लेकिन मैं कुछ अन्य फाइलों में बदलाव कर रहा था और अब यह मेरे लिए काम कर रहा है। शायद यह मेरी टेस्ट स्क्रिप्ट के साथ कोई त्रुटि नहीं थी। निश्चित नहीं है कि समस्या क्या थी क्योंकि यह बहुत दूर नहीं लग रहा था। वैसे भी आपकी मदद के लिए धन्यवाद, अगर मुझे पता चले कि समस्या क्या है तो मैं वापस पोस्ट करूंगा। मैं खुद को जानना चाहता हूं। – Martyn