Open joki20 opened 3 years ago
Jag har bara gissningar men det låter som att sessionen inte är startad när du kör enhetstesterna.
Jag hade försökt leta upp dokumentationen kring hur man skriver enhetstester i laravel för att jobba mot sessionen.
Samma problem fortfarande. Kan inte utföra mina tester på grund av detta. Kollar här: https://laravel.com/docs/5.2/testing men kan inte hitta någon lösning.
Felet uppstår när jag anropar setPointsSession()
Det enda setPointsSessions() gör är att sätta igång sessioner, så på så sätt är ju sessionen startad?!
Jag provade en väldigt enkel funktion att testa men med samma resultat:
Jag tolkar det som att vi behöver använda withsession enligt dokumentationen https://laravel.com/docs/5.2/testing#sessions-and-authentication
Men får inte till det ändå vid make phpunit
Jag har inget svar.
Men generellt så hade jag först avgränsat problemet till ett testfall, en kodrad och ett felmeddelande. Det hade visat mig exakt den konstruktionen som ger felet. Kanske kan du klura ut det från ovan fel, men ibland (ofta) är det enklare att göra ett mindre testfall så det blir tydligt. Det hade iallafall underlättat att googla felet och att veta var i manualen jag bör leta. Dessutom hade det hjälpt dig att testa och se hur withSession fungerar (pröva läsa sessionen).
I manualen för test finns i inledningen en mening om vikten av att rensa cachen.
Någon påpekar en annan felkälla (men kommer felet inuti Laravel så känns det lite udda).
Probably you have used somewhere session instead of Session facade (capital S)
Det är det jag har gjort i förra inlägget: skapat en enkel funktion med endast en session. Jag har anropat den utan withsession och provat med withsession. Dokumentationen har ett enda exempel där de anropar visit() efter withsession, som jag antar är en inbyggd funktion för att gå vidare till en annan sida?
Jag har googlat felet och provat olika lösningar, även kört composer update och rensat all slags cache enligt https://github.com/laravel/framework/issues/17583 solution that work for me is composer update and php artisan cache:clear && php artisan route:clear && php artisan config:clear && php artisan view:clear hope this may help someone
Felet uppstår vid anrop till en klass med en skapad session inuti sig. Jag kan inte göra en enklare metod än den till höger:
Hur ska jag göra om jag inte kommer runt det här problemet? Har suttit med detta en 10 timmar säkert nu, och hittar inget gammalt dbwebb-inlägg av någon som tar upp samma problem.
Vi hittar ingen äldre information om detta, det är nya inslag i årets kurs.
Finner du ingen lösning inom rimlig tid så hoppa över (kommentera bort testfallen) och gå vidare.
Kanske stöter du på en lösning lite senare. Annars så skriver du bara av dig i redovisningstexten. Det blir bra att göra så. Kursen innehåller flera inslag där det är lätt att gräva ned sig. Man behöver själv ha ett grepp om vad som är rimligt och inte. Man kan alltid säga "pass" och gå vidare. Det finns ofta skälig anledning till varför man gör så (skriv i redovisningstexten).
Tack, men tråkigt att behöva göra det just för att jag inte kan göra många tester då mitt projekt är väldigt beroende av sessioner. Gör också att det blir svårare att diskutera vissa saker i krav 3 optionella krav som kodkvalitet, enhetstester med kodtäckning och testbar kod?
Ta en paus i två dagar och fokusera på något annat. Sånt kan ibland lätta upp saker.
Enda nackdelen med att kommentera bort testfallen blir din kodtäckning. Det är inte en så stor grej.
Jag har fått problem vid testning där sessioner definieras inuti Laravel-klasser enligt session()->put('sessionsnamn', värde). Trots att jag definierar session genom put så får jag att "Class session does not exist". Hade inte problem med testning genom $_SESSION i kmom03.