Feature testing mobile variants

For a project, we wanted to write a feature spec for the mobile variant of the site. Instinctively, the first thing I did was google. I found nothing. The next thing I did was think. I came up with this, which worked:

require 'rails_helper'

feature 'Mobile variant' do
  before do
    allow_any_instance_of(ActionDispatch::Request).to receive(:variant).and_return([:mobile])
  end

  scenario 'Look at customer information' do
    # your test here!
  end
end

Happy testing!

VCR Tests mit Custom matcher

VCR ist ein Library um Tests zu schreiben welche HTTP Requests auf externe Services machen.

VCR nimmt die Anfragen an den Service auf und spielt die Antworten bei bedarf wieder ab. Somit können Tests beschleunigt und unabhängig von externen Diensten gemacht werden.

Um zu bestimmen ob eine aufgenommene Antwort wieder abgespielt werden soll, greift VCR auf Request Matchers zurück. Nebst diversen bereits vorhandenen Matchern kann VCR um eigene Matchers erweitert werden.

Ein Matcher ist ein “callable” welches zwei Argumente nimmt (zwei Requests welche verglichen werden müssen) und ein Boolean wert zurückgibt.

do |a, b|
  true
end

Ein einfacher (und nutzloser) Matcher.

Man kann Custom Matcher einsetzen um z.B. bestimmte Parameter zu ignorieren oder Host Name basiertes loadbalancing (api1.foo.com, api2.foo.com…) abzudecken.