/ / केकपीईपी यूनिट-परीक्षण नियंत्रक स्पष्ट जोड़ के साथ - इकाई-परीक्षण, केकफ, केकफ-2.5

स्पष्ट जोड़ों के साथ केकेपीएचपी यूनिट-परीक्षण नियंत्रक - यूनिट-परीक्षण, केकेएफपी, केकेएचपी-2.5

नियंत्रक कोड I का परीक्षण करने के लिए देख रहा है जिसमें ऐसे कार्य शामिल हैं जहाँ क्वेरीज़ पसंद हैं

$this->Model->find("all", [
"joins" => [
"table" => database.table,
"type" => "inner",
"conditions" => ["table.id" => "Model.table_id"]
],
]);

बड़े पैमाने पर उपयोग किया जाता है।

समस्या यह है कि testAction मॉडल की तालिका को सही ढंग से ढूँढता है test डेटासोर्स, लेकिन स्पष्ट जुड़ाव को संशोधित नहीं करता है, जो इसे वास्तविक में जोड़ता है database.table, बजाय test.table.

मेरा अंतर्ज्ञान मुझे बताता है कि CakePHP का उपयोग करने के बजाय इन प्रश्नों को फिर से लिखना केककेपी की अनुमति देना चाहिए ControllerTestCase शामिल किए गए मॉडल के डेटा स्रोत को बदलने के लिए test डेटा स्रोत, समस्या को ठीक करना। हालाँकि, मैं सभी क्वेरी कोड को फिर से लिखना नहीं चाहता।

किसी को भी इस के आसपास काम करने का एक तरीका पता है? यदि नहीं, तो क्या मैं यह सोचने में सही हूं कि समस्या को हल करने के लिए विधि शामिल होगी?

उत्तर:

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

समस्या यह है कि सम्मिलित होने में, "table" => database.table, हार्ड कोडित है, इसलिए केक क्वेरी को पुनर्निर्देशित नहीं कर सकता है test डेटा स्रोत (यह दिखेगा) table में database)। इसे ठीक करने के लिए, प्रतिस्थापित करें database में database.test साथ में $this->Model->getDataSource()->config["database"], कहा पे Model मॉडल को संदर्भित करता है table का प्रतिनिधित्व करता है (या के लिए एक शामिल होने की मेज है)। परीक्षण के मामलों में, केक मॉडल बदल सकते हैं "डेटा स्रोत test डेटा स्रोत, इसलिए क्वेरी ठीक से संशोधित की जाएगी।