6

में अनुरोध वातावरण चर मैं एक कार्यात्मक परीक्षण है कि अनुरोध वस्तु की स्थिति के अनुसार वेरिएबल एक उपयोगकर्ता अनुकरण के कुछ बदल जाता है में लॉग इन किया है लिखा है।बदलें रेल एकीकरण परीक्षण

require 'test_helper' 
class BeesControllerTest < ActionController::TestCase 

    # See that the index page gets called correctly. 
    def test_get_index 

    @request.env['HTTPS'] = "on" 
    @request.env['SERVER_NAME'] = "sandbox.example.com" 
    @request.env['REMOTE_USER'] = "joeuser" # Authn/Authz done via REMOTE_USER 

    get :index 
    assert_response :success 
    assert_not_nil(assigns(:bees)) 
    assert_select "title", "Bees and Honey" 
    end 
end 

कार्यात्मक परीक्षण ठीक काम करता है।

अब मैं एकीकरण परीक्षण के हिस्से के समान कुछ करना चाहता हूं। यहाँ मैं क्या करने की कोशिश की है:

require 'test_helper' 
class CreateBeeTest < ActionController::IntegrationTest 
    fixtures :bees 

    def test_create 
    @request.env['HTTPS'] = "on" 
    @request.env['SERVER_NAME'] = "sandbox.example.com" 
    @request.env['REMOTE_USER'] = "joeuser" # Authn/Authz done via REMOTE_USER 

    https? 

    get "/" 
    assert_response :success 
    [... more ...] 
    end 
end 

मैं एक त्रुटि शिकायत की कि @request नहीं के बराबर है मिलता है। मुझे संदेह है कि सत्र सत्र के साथ इसका कुछ संबंध है, लेकिन मुझे यकीन नहीं है कि इसे कैसे काम पर लाया जाए।

+0

क्या लाइन त्रुटि फेंकता है? – kikito

+0

पंक्ति '@ request.env [' HTTPS '] = "चालू" शिकायत है कि आप' एनवी' विधि को शून्य मान पर लागू नहीं कर सकते हैं। – rlandster

+0

यहां रेल के लिए तीन वर्षीय पैच सबमिशन है जो इस मुद्दे को संबोधित करता है: http://dev.rubyonrails.org/ticket/8209 – rlandster

उत्तर

2

आप

https! 

के साथ एकीकरण के परीक्षण में HTTPS सेट और साथ होस्ट नाम सेट कर सकते हैं:

host! "sandbox.example.com" 

कौन सा है कि आप क्या करना चाहते हैं के बराबर हो सकता है?

इस रेल में वर्णन किया गया गाइड Rails guides

+3

लेकिन उदाहरण के लिए request.remote_ip' कैसे सेट करें? इसके लिए 'एक्शनडिस्चैच :: एकीकरण :: सत्र' में कोई भी विशेष विधि नहीं है – Green

0

आप विधि पोस्ट करने के लिए मापदंडों के माध्यम से अनुरोध चर बदल सकते हैं।

अपने मामले के लिए, विधि test_create हो जाएगा: कच्चे डेटा को पोस्ट अनुरोध स्थापित करने के लिए

def test_create 
    https! 

    get "/", nil, { 'SERVER_NAME'] => "sandbox.example.com", 'REMOTE_USER'] => "joeuser" } 

    assert_response :success 
    [... more ...] 
end 

एक ही काम करता है:

post root_path, nil, { 'RAW_POST_DATA' => 'some string' } 
संबंधित मुद्दे