Rspec-rails: ์š”์ฒญ ํ…Œ์ŠคํŠธ์—์„œ ๋ชจ๋ธ์— true๋ฅผ ๋ถ€์šธ๋กœ ์ „๋‹ฌ

์— ๋งŒ๋“  2016๋…„ 01์›” 04์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: rspec/rspec-rails

๋ ˆ์ผ์ฆˆ ๋ฒ„์ „: 4.1.10
Rspec ๋ ˆ์ผ ๋ฒ„์ „: 3.0.2

์š”์ฒญ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑ ์ค‘์ด๊ณ  ๋ชจ๋ธ์—๋Š” true ๋ฌธ์ž์—ด์ด ์•„๋‹Œ ๋ถ€์šธ true ์†์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ ํ…Œ์ŠคํŠธ( param[:attribute] = true )์—์„œ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ๋ชจ๋ธ์€ model.attribute = "true" ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ( "true" ๋ฌธ์ž์—ด)

์ปจํŠธ๋กค๋Ÿฌ ํ…Œ์ŠคํŠธ( param[:attribute] = true )์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ๋ชจ๋ธ์€ model.attribute = true ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ( true ๋ถ€์šธ๋กœ)

์š”์ฒญ ํ…Œ์ŠคํŠธ์—์„œ ๋ชจ๋ธ์— ๋ถ€์šธ ๊ฐ’์œผ๋กœ true ๋ฅผ ์ „๋‹ฌํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์œ„์˜ ์š”์ง€:
https://gist.github.com/a-leung/cc44372f1ae776726e89

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ถ€์šธ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ true/false๋กœ ์ปจํŠธ๋กค๋Ÿฌ์— ์˜ค๋Š” ๊ฒฝ์šฐ ๋ณธ๋ฌธ์— JSON์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

post :update, params: { id: user.id, attribute: true }, as: :json

์•„๋‹ˆ๋ฉด ์ด๊ฑฐ:

post :update, params: { id: user.id }, body: { attribute: true }.to_json, as: :json

ํ…Œ์ŠคํŠธ์—์„œ๋„ ๋ถ€์šธ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  6 ๋Œ“๊ธ€

model.attribute = (1 == 1)์„ ์‹œ๋„ ํ–ˆ์Šต๋‹ˆ๊นŒ?

๋ฌธ์ œ๋Š” model.attribute ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ „๋‹ฌ๋˜๋Š” rspec ๋งค๊ฐœ๋ณ€์ˆ˜( params[:attribute] = true ๊ฒฐ๊ณผ: model.attribute == true )์™€ ์š”์ฒญ( params[:attribute] = true ๊ฒฐ๊ณผ model.attribute == 'true' ).

๋™์ผํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ์ปจํŠธ๋กค๋Ÿฌ ํ…Œ์ŠคํŠธ๋Š” ๋ถ€์šธ true๋ฅผ ๋ชจ๋ธ์— ์ „๋‹ฌํ•˜๊ณ  ์š”์ฒญ ํ…Œ์ŠคํŠธ๋Š” ๋ฌธ์ž์—ด true๋ฅผ ๋ชจ๋ธ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

์ƒํ™ฉ์ด ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ์‹œ์—ฐํ•  ๊ฐ„๋‹จํ•œ ๋ ˆ์ผ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ ˆ์ผ ํ…Œ์ŠคํŠธ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด JSON์˜ ๊ฒฝ์šฐ ์ปจํŠธ๋กค๋Ÿฌ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹ค์ œ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” JSON์˜ ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ์ด์ „์— ๋ฏธ๋“ค์›จ์–ด์— ์˜ํ•ด ๋””์ฝ”๋”ฉ๋˜์ง€ ์•Š๋Š” ํ•œ ์‹ค์ œ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํ•ญ์ƒ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค...

์•„์•„ ์ข‹์•„. ์„ค๋ช… ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ปจํŠธ๋กค๋Ÿฌ ํ…Œ์ŠคํŠธ์™€ ๋™์ผํ•œ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์š”์ฒญ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋“ค์€ ์ด๋ฏธ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ถ€์šธ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ true/false๋กœ ์ปจํŠธ๋กค๋Ÿฌ์— ์˜ค๋Š” ๊ฒฝ์šฐ ๋ณธ๋ฌธ์— JSON์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

post :update, params: { id: user.id, attribute: true }, as: :json

์•„๋‹ˆ๋ฉด ์ด๊ฑฐ:

post :update, params: { id: user.id }, body: { attribute: true }.to_json, as: :json

ํ…Œ์ŠคํŠธ์—์„œ๋„ ๋ถ€์šธ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰