Vraag : komkommer en webrat het vinden van het geen bericht van de sporenflits

zo heb ik een eigenschap van de komkommerinschrijving dat als de inschrijving succesvol is de output „Registratie succesvol“ in HTML zoekt. Ik weet dat het daar is omdat ik het in browser kan zien maar de komkommer vindt geen it.
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
#signup.feature
Eigenschap: Inschrijving
  Om de website te gebruiken
  Als kandidaat
  Ik wil aan inschrijving kunnen
  
  Scenario: inschrijving
    Gegeven ben ik op de inschrijvingspagina
    Wanneer ik „[email protected]“ voor „user_email“ invul
    Wanneer ik „123456“ voor „user_password“ invul
    Wanneer ik „123456“ voor „user_password_confirmation“ invul
    Wanneer ik „user_submit“ druk
    Dan zou ik „succesvolle Registratie moeten zien“

#cucumber eindoutput
(::) ontbroken stappen (::)

verwachtte dat de inhoud van het volgende element omvat „succesvolle Registratie“:
KADAKO Arbeid CC
				Het programma geopend als [email protected]
				Profiel
				Logout
	[email protected]
		Persoonlijke Details	
			Geef persoonlijke details uit
								Volledige Naam:
					DOB:
					Adres:
					Het Aantal van het paspoort:
					Het paspoort verloopt:
					Nationaliteit:
					Contact E-mail:
					De Telefoon van het huis:
					Mobiele Telefoon:
					PCN Aantal:
					Andere identiteitskaart van het Bestuursorgaan:
	De Nieuwe kwalificatie van kwalificaties
		Nieuwe het werkgeschiedenis van de Geschiedenis van het werk
		© Auteursrecht 2010
		Termijnen van de Dienst | 
		Contacteer ons 
		Ontworpen en gebouwd door:
var gaJsHost = ((„https: “ == document.location.protocol)? „https://ssl.“ : „http://www. “);
document.write (unescape („%3Cscript src='" + gaJsHost + „google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E“));
probeer {
var pageTracker = _gat. _getTracker („RE-15856249-1“);
pageTracker. _trackPageview ();
} vang (vergis me) {} (Specificatie:: Verwachtingen:: ExpectationNotMetError)
./features/step_definitions/web_steps.rb: 145: in „/^ (?: |I) „([^“] *) „$“ zou moeten zien
eigenschappen/signup.feature: 12: in „dan zou ik „succesvolle Registratie moeten zien““

Antwoord : komkommer en webrat het vinden van het geen bericht van de sporenflits

O.K.… Hier is de inhoud van de blogpost… jon

Robijn: Het gebruiken van reset_session in Sporen met Komkommer en Webrat
Ik diende het volgende insect in:

    Alle de veiligheidsgidsen van Sporen zeggen dat u reset_session zou moeten roepen nadat de gebruiker het programma opent of aflogt. Dit haalt de zitting leeg en dwingt dat een nieuwe zittingsidentiteitskaart wordt tot stand gebracht. Het schijnt er een paar insecten van Sporen met betrekking tot reset_session in de loop van de jaren zijn geweest. Nochtans, ben ik nu ongerust gemaakt dat er een conflict ergens met betrekking tot de testende infrastructuur en/of Webrat van Sporen is.

    In mijn login actie, roep ik reset_session en zette toen een aardig bericht in flits. Wanneer ik eigenlijk de website gebruik, kan ik zien (via Firefox) dat ik een nieuwe zittingsidentiteitskaart krijg, en ik mijn flitsbericht kan zien. Nochtans, wanneer ik tests voor die twee dingen schrijf, wordt het flitsbericht verloren, en ik krijg geen nieuwe zittingsidentiteitskaart in mijn koekjes. Het is bijna alsof de nieuwe zitting wordt genegeerd, en de oude zitting wordt gebruikt.

    Ik ben droevig, maar ik kan niet precies vertellen waar het probleem is. Ik weet dat er de speciale code is van Sporen die zittingskoekjes behandelt wanneer u integratie het testen doet.

    Ik gebruik actionpack-2.3.8 en webrat-0.7.1.

Hier is hoe ik mijn beste rond het probleem deed werken.

Eerst en vooral, sla ik mijn zittingen in het gegevensbestand op. Vandaar, cre�ërde ik een model ActiveRecord om zittingsverslagen manueel te schrappen:

de klassen Zitting <� ActiveRecord::Base="">  # reset_session van Sporen zijn niets dan probleem voor ons geweest.  Ik neem
  # is in mijn eigen handen van belang.  Deze code zal moeten veranderen als wij ophouden
  # zettend onze zittingen in het gegevensbestand.
  def self.nuke_session (session_id)
    find_by_session_id! (session_id) .destroy
  eind
eind

Aangezien ik authlogic gebruik, kijkt mijn logout actie iets in die aard:

def vernietig
  current_user_session.destroy

  # Vermijd de aanvallen van de zittingsbevestiging.  Dit kan overtollig schijnen, maar het was
  # noodzakelijk om de tests te maken overgaan.
  zitting [: test_that_this_disappears] = „o.k.“
  session_id = koekjes [ActionController:: Base.session_options [: zeer belangrijk]]
  Session.nuke_session (session_id)
  reset_session

  redirect_to: actie =>: logged_out
eind

Mijn login actie is iets in die aard:

def cre�ër
  @user_session = UserSession.new (params [: user_session])
  tenzij @user_session.valid?
    de terugkeer geeft terug: actie =>: nieuw
  eind

  # Vermijd de aanvallen van de zittingsbevestiging door de zitting terug te stellen.
  reset_session
  @user_session = UserSession.new (params [: user_session])
  @user_session.save!

  # Met een bepaalde bedoeling, boeken de flits, reset_session, de Komkommer, enz. niet vooruitgang,
  # zo moet ik het flitsbericht via een parameter overgaan.
  redirect_to (root_url (: login => 1))
eind

In plaats van het plaatsen van een bericht via flits, ga ik een vraagparameter over.

Ik controleer deze parameter in mijn ApplicationController:

before_filter: check_for_login_message

# Met een bepaalde bedoeling, boeken de flits, reset_session, de Komkommer, enz. niet vooruitgang.
# Vandaar, na login, moeten wij het flitsbericht via een vraagparameter overgaan
# eerder dan via flits.
#
# Als ik dit soort ding moet opnieuw doen, zal ik een hoogtepunt van de raadplegingslijst creëren
# van berichten.
def check_for_login_message
  flash.now [: success_message] = „succesvol Login!“ als params [: login]
eind

Tot slot heb ik dit in een eigenschapdossier:

# Zou deze test moeten werken.  In feite, werkt het wanneer u uw browser gebruikt.
# Nochtans, is er een insect ergens tussen Sporen en Webrat die verhindert
# het van het werken wanneer u Komkommer gebruikt.  Op de een of andere manier, is reset_session gebroken.
#
# Scenario: het het programma openen zou uw zittingskoekje moeten ongeldig maken
# Gegeven ben ik op de homepage
# Wanneer ik mijn zittingskoekje bekijk
# En ik word het programma geopend
# Dan zou ik een verschillend zittingskoekje moeten hebben

Die test baseert zich op deze stappen:

# Zou deze test moeten werken.  In feite, werkt het wanneer u uw browser gebruikt.
# Nochtans, is er een insect ergens tussen Sporen en Webrat die verhindert
# het van het werken wanneer u Komkommer gebruikt.  Op de een of andere manier, is reset_session gebroken.
#
# Bepaalde bekijkt/^I mijn zitting cookie$/
# @cookie = koekjes [ActionController:: Base.session_options [: zeer belangrijk]]
# eind
#
# Dan zou/^I een verschillende zitting cookie$/moeten hebben doen
# new_cookie = koekjes [ActionController:: Base.session_options [: zeer belangrijk]]
# new_cookie.sh ould_not == @cookie
# eind
Andere oplossingen  
 
programming4us programming4us