इस मेरे दृष्टिकोण अगर मैं Jbuilder
मणि अब रेल टीम से उपलब्ध है कि उपयोग कर रहा हूँ थोड़ी अलग है। (यह दृष्टिकोण अन्य रत्नों पर लागू होता है जो JSON या XML को विचार के रूप में प्रस्तुत करते हैं।) जब भी संभव हो, मैं कार्यात्मक परीक्षणों पर इकाई परीक्षण पसंद करता हूं, क्योंकि वे काफी तेज़ हो सकते हैं। जेबिल्डर के साथ आप अधिकांश परीक्षणों को यूनिट परीक्षणों में बदल सकते हैं।
हां, आपके पास अभी भी नियंत्रक पर कार्यात्मक परीक्षण हैं, लेकिन बहुत कम हैं और वे JSON को पार्स नहीं करते हैं। कार्यात्मक परीक्षण पूरी तरह से नियंत्रक तर्क का परीक्षण करता है, न कि प्रस्तुत JSON। एक वैध अनुरोध के बाद (RSpec) पर जोर हो सकता है के लिए एक कार्यात्मक परीक्षण:
assert_response :success
expect(response).to render_template(:show)
expect(assigns(:item).id).to eq(expected_item.id)
मैं बस की पुष्टि करने कर रहा हूँ यह सफल हुआ है कि, यह टेम्पलेट प्रस्तुत हुई है, और यह टेम्पलेट के लिए मद से गुजरता है। इस बिंदु पर, दृश्य में उचित प्रतिपादन करने के लिए आवश्यक जानकारी होती है।
अब जेबिल्डर दृश्य को परीक्षण करने वाले यूनिट द्वारा प्रदान किए गए JSON का परीक्षण करें।
describe 'api/v1/items/show.json.jbuilder' do
it 'includes foo' do
assign(:item, account.build(foo: 'bar'))
render
json = JSON.parse(rendered)
expect(json['item']['foo']).to eq('bar')
end
# A bunch of other JSON tests...
स्रोत
2014-09-06 18:23:51
जेसन प्रतिक्रिया को पार्स करना सबसे आसान तरीका नहीं होगा? – jdeseno
मैं इस धारणा के तहत था कि यूनिट परीक्षण वास्तव में दृश्य को नहीं बुलाता है। क्या यह मामला है? यदि हां, तो किस प्रकार का परीक्षण मैं देखता हूं (देखें?) –
मेरा मानना है कि इस प्रश्न पर पहले से ही चर्चा की गई थी [यहां] (http://stackoverflow.com/questions/336716/how-to-test-json-result-from -rails कार्यात्मक परीक्षण)। आप जो कर रहे हैं वह यूनिट नहीं है, लेकिन कार्यात्मक परीक्षण है। और यह वास्तव में दृश्य प्रस्तुत करता है। –