_λ©΄μ± μ‘°ν: μ΄ μμ²μ νΉν Capybaraλ‘ JavaScript μΉμΈ ν μ€νΈλ₯Ό μνν κ²°κ³Όμ λλ€. λ€λ₯Έ μν©μ λν μ¬μ© μ¬λ‘λ₯Ό λ³Ό μ μμ§λ§._
λ΄ λͺ¨λ μμ© νλ‘κ·Έλ¨μ JSκ° κΊΌμ§ μνμμλ μ μλνλλ‘ μ½λ©λμ΄ μμ§λ§ JSλ₯Ό μΌλ©΄ _μΌμ§__ μ¬μ©μ κ²½νμ λ μ¦κ²κ² λ§λ€κΈ° μν΄ λ©μ§ μ’ μ리μ ννλμ λ§μ΄ μ»μ μ μμ΅λλ€. μ΄ λλ¬Έμ μ¬μ©μμ κ΄μ μμ 보면 λλΆλΆμ μ¬λ¬Όμ λν μνΈ μμ©μ λμΌν©λλ€. κ·Έλ¬λ JSμ w/o λͺ¨λμμ μλνλμ§ ν μ€νΈνκ³ μΆμ΅λλ€.
λ΄κ° μνλ κ²μ RSpecμ΄ κ° νν° μΈνΈλ₯Ό μ¬μ©νμ¬ λμΌν μ¬μμ λ λ² μ€ννλλ‘ μ§μνλ μΌμ’ μ νλκ·Έλ₯Ό μ€μ νλ κ²μ λλ€. λ€μκ³Ό κ°μ κ²:
it 'does this same thing with and without JS enabled', :run_with => [{:js => true}, {:js => false}] do
# stuff here
end
λλ μ΄κ²μ΄ 곡μ μμ λ‘ λ¬μ±λ μ μλ€λ κ²μ μκ³ μμ§λ§ κ²°κ³Ό μ½λλ κ·Έλ€μ§ μ°μνμ§ μμ΅λλ€.
λ€μκ³Ό κ°μ΄ Firefox(Selenium)μμ JS λ° Webkit(capybara-webkit)μμ JS μμ΄ JS(λ ν μ€νΈ)λ₯Ό ν μ€νΈνλ €λ κ²½μ° μΆκ°λ‘ μ¬μ©ν μ μμ΅λλ€.
it 'does this same thing with and without JS enabled', :run_with => [{:js => false}, {:driver => :selenium}, {:driver => :webkit}] do
# stuff here
end
λν μ¬μ©μ μ§μ νν°λ₯Ό μ¬μ©νμ¬ run_with
μ΅μ
μ μ§μ νλ λ°©λ²μ ꡬμ μ€μ΄λ―λ‘ λ€μκ³Ό κ°μ΄ μ₯ν©νμ§ μμ΅λλ€.
it 'does this same thing with and without JS enabled', :run_with_all_drivers => true do
# stuff here
end
μκ°? λ¬Έμμ μ½λλ₯Ό μ΄ν΄λ³΄μμ§λ§ νμ¬ νν°λ₯Ό μ¬μ©νμ¬ μ΄ μμ μ μννλ λ°©λ²μ λ³΄μ§ λͺ»νμ΅λλ€.
νν°λ κΈ°λ³Έμ μΌλ‘ μ΄ μμ μ μννλλ‘ μ€κ³λμ§ μμμ§λ§ RSpecμ λ³κ²½νμ§ μκ³ μνλ λμμ μ»λ κ²μ μ΄λ ΅μ§ μμ΅λλ€.
[true, false].each do |js|
it 'does this same thing with and without JS enabled', :run_with => {:js => js } do
# stuff here
end
end
μ΄κ²μ΄ νμν μΌλ°μ μΈ ν¨ν΄μΈ κ²½μ° μ΄μ λν μ½κ°μ DSL λ°©λ²μ λ§λ€ μ μμ΅λλ€.
module WithAndWithoutJS
def with_and_without_js(&block)
[true, false].each do |js|
context "with :js => #{js}", :run_with => { :js => js } do
module_eval(&block)
end
end
end
RSpec.configure { |c| c.extend self }
end
κ·Έλ° λ€μ μ΄ λ°©λ²μ λ€μκ³Ό κ°μ΄ μ¬μ©ν μ μμ΅λλ€.
describe "My integration spec" do
with_and_without_js do
it "does something with and without js" do
end
end
end
λλ μ΄κ²μ΄ μλΉν μ°μν κ²μ΄λΌκ³ μκ°νλ€. κ·νκ° μμ²ν μμ μ μννκΈ° μν΄ νν°κ° μλνλ λ°©μμ λ³κ²½νλ κ²μ κ±°μ μ¬μ©λμ§ μμ κ²μΌλ‘ μμλλ κΈ°λ₯μ λν ν₯ν μ μ§ κ΄λ¦¬ λΆλ΄μ RSpec νμ μΆκ°νλ μλΉν μ€μν λ³κ²½μ΄ λ κ²μ΄λ―λ‘ λ΄ λ³Έλ₯μ μ΄κ²μ μ½μ΄μ μΆκ°νμ§ μλ κ²μ λλ€. .
μ¦, μ΄ κΈ°λ₯μ μ 곡νλ rspec-multi-filters
gemμ λ§λ€κ³ μΆλ€λ©΄ μμ λ‘κ² μ¬μ©νμΈμ :).
@myronmarston νμμ κ°μ΄ RSpecμ΄ λ¬΄μμ ν μ μλμ§μ λν 무μ§μμ΅λλ€. μκ°μ λ΄μ΄ μ€λͺ ν΄μ£Όμ μ κ°μ¬ν©λλ€. λλ μ΄κ²μ΄ μ μλν κ²μ΄λΌκ³ μκ°νλ€. :)
:+1: κ΅μ₯νλ€
κ°μ₯ μ μ©ν λκΈ
νν°λ κΈ°λ³Έμ μΌλ‘ μ΄ μμ μ μννλλ‘ μ€κ³λμ§ μμμ§λ§ RSpecμ λ³κ²½νμ§ μκ³ μνλ λμμ μ»λ κ²μ μ΄λ ΅μ§ μμ΅λλ€.
μ΄κ²μ΄ νμν μΌλ°μ μΈ ν¨ν΄μΈ κ²½μ° μ΄μ λν μ½κ°μ DSL λ°©λ²μ λ§λ€ μ μμ΅λλ€.
κ·Έλ° λ€μ μ΄ λ°©λ²μ λ€μκ³Ό κ°μ΄ μ¬μ©ν μ μμ΅λλ€.
λλ μ΄κ²μ΄ μλΉν μ°μν κ²μ΄λΌκ³ μκ°νλ€. κ·νκ° μμ²ν μμ μ μννκΈ° μν΄ νν°κ° μλνλ λ°©μμ λ³κ²½νλ κ²μ κ±°μ μ¬μ©λμ§ μμ κ²μΌλ‘ μμλλ κΈ°λ₯μ λν ν₯ν μ μ§ κ΄λ¦¬ λΆλ΄μ RSpec νμ μΆκ°νλ μλΉν μ€μν λ³κ²½μ΄ λ κ²μ΄λ―λ‘ λ΄ λ³Έλ₯μ μ΄κ²μ μ½μ΄μ μΆκ°νμ§ μλ κ²μ λλ€. .
μ¦, μ΄ κΈ°λ₯μ μ 곡νλ
rspec-multi-filters
gemμ λ§λ€κ³ μΆλ€λ©΄ μμ λ‘κ² μ¬μ©νμΈμ :).