Istnieje wiele nieporozumień na temat ustawiania cookies w rspec http://relishapp.com/rspec/rspec-rails/v/2-6/dir/controller-specs/file/cookiesJak przetestować cookies wygaśnięcia szynach rspec
w kontrolerze, normalnie można napisać
cookies['transaction_code'] = { :expires => 300.seconds.from_now, :value => c }
ale w RSpec mogę tylko Napisać
request.cookies['transaction_code'] = transaction_code
jeśli powiem
request.cookies['transaction_code'] = { :expires => 300.seconds.from_now, :value => c }
Otrzymuję skrót z powrotem jako wartość plików cookie ["kod_pryw."] W moim kontrolerze.
Teraz moje pytanie brzmi: jak ustawić/przetestować wygasanie ciasteczek, a następnie w przykładzie testowym kontrolera rspec?
AKTUALIZACJA: W sekundach myślałem: Chodzi mi o to, jak mogę sprawdzić, czy kontroler reaguje na wygasły plik cookie zgodnie z oczekiwaniami, ale w rzeczywistości wygasły plik cookie jest jak brak ciasteczka, jeśli ufam wdrażaniu plików cookie, co powinien zrobić, więc w końcu moje pytanie nie ma sensu. W takim przypadku muszę sprawdzić, czy (inna) akcja kontrolera poprawnie ustawia wygasający plik cookie, ale jak to zrobić, jeśli pliki cookie ["kod_prowadzenia"] w teście tylko zwracają wartość?
nice one kro, akceptuję twoją odpowiedź, nie jestem pewien o stubbecie cookiestore, wspominając o oczywistym Dostęp do słoika z ciasteczkami jest obojętny na użycie symboli lub łańcuchów jako kluczy w przeciwieństwie do twojego hasha. Ogólnie rzecz biorąc, czuję się nieswojo, ponieważ jest to część struktury. Ponadto, jest coś takiego jak expiring_cookie [: expires] .to_i.should be_within (1) .of (1.hour.from_now.nowi) najlepsza praktyka do testowania dynamicznych ustawień czasu? –
Nie, prawdopodobnie zrobiłbym coś innego z Matcherem dla 'DateTime' w rzeczywistej specyfikacji. Moim celem było dostarczenie czegoś, co przejdzie jako ilustracja, ponieważ '==' nie będzie. – krohrbaugh
Co do twojego obojętnego problemu z dostępem; można to łatwo naprawić, używając 'ActiveSupport :: HashWithIndifferentAccess' zamiast stdlib' Hash'. Zaktualizowałem przykładowy kod, aby to odzwierciedlić. – krohrbaugh