質問編集履歴
2
.
    
        title	
    CHANGED
    
    | 
         @@ -1,1 +1,1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            .test Golangtest
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -1,50 +1,1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            ### 前提
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            GolangのEchoを使っています。
         
     | 
| 
       4 
     | 
    
         
            -
            セッションの絡むテストコードを書きたいのですが、echo.Contextにセッションが保存できずで困っています。
         
     | 
| 
       5 
     | 
    
         
            -
            ソースとしては大体下記のようになっています。
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
            ```
         
     | 
| 
       10 
     | 
    
         
            -
            import{
         
     | 
| 
       11 
     | 
    
         
            -
            	"github.com/gorilla/sessions"
         
     | 
| 
       12 
     | 
    
         
            -
            	"github.com/labstack/echo-contrib/session"
         
     | 
| 
       13 
     | 
    
         
            -
            	"github.com/labstack/echo/v4"
         
     | 
| 
       14 
     | 
    
         
            -
            }
         
     | 
| 
       15 
     | 
    
         
            -
            ```
         
     | 
| 
       16 
     | 
    
         
            -
            		echoServer := echo.New()
         
     | 
| 
       17 
     | 
    
         
            -
            		store := sessions.NewCookieStore([]byte("secret"))
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
            		req := httptest.NewRequest(http.MethodGet, "/", nil)
         
     | 
| 
       20 
     | 
    
         
            -
            		req.Header.Set("Content-Type", "text/html")
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
            		rec := httptest.NewRecorder()
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
            		sess, _ := store.New(req, "session")
         
     | 
| 
       25 
     | 
    
         
            -
            		sess.Options = &sessions.Options{
         
     | 
| 
       26 
     | 
    
         
            -
            			Path:     "/",
         
     | 
| 
       27 
     | 
    
         
            -
            			MaxAge:   80000,
         
     | 
| 
       28 
     | 
    
         
            -
            			HttpOnly: false,
         
     | 
| 
       29 
     | 
    
         
            -
            		}
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                    // ここでセッションがセットされている想定
         
     | 
| 
       32 
     | 
    
         
            -
            		sess.Save(req, rec)
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
            		c := echoServer.NewContext(req, rec)
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                    // 一応念の為こっちでもセット
         
     | 
| 
       37 
     | 
    
         
            -
            		sess.Save(c.Request(), c.Response())
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
            		c.SetPath("/")
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                    // ここで取得すると、s_testはnilとなっている↓
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            ..test Golangtest.test Golangtest.test Golangtest
         
     | 
| 
       43 
     | 
    
         
            -
            		fmt.Print(s_test)
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
            コメントにも書いてあるんですが、 sess.Saveでセットしているかと思うのですが、その後 session.Get で取得した際にnilが帰ってきてしまう状態です。
         
     | 
| 
       46 
     | 
    
         
            -
            検索しても、Goのセッション保存してのテストに関する結果がものすごく少なくて困っています。
         
     | 
| 
       47 
     | 
    
         
            -
            よろしくお願いします。
         
     | 
| 
       48 
     | 
    
         
            -
            追記
         
     | 
| 
       49 
     | 
    
         
            -
            ↓こちらに、コードを載せてみました。Runで動作確認が可能です。
         
     | 
| 
       50 
     | 
    
         
            -
            https://go.dev/play/p/m7FR6ARljNA
         
     | 
1
コードを追記
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -44,4 +44,7 @@ 
     | 
|
| 
       44 
44 
     | 
    
         | 
| 
       45 
45 
     | 
    
         
             
            コメントにも書いてあるんですが、 sess.Saveでセットしているかと思うのですが、その後 session.Get で取得した際にnilが帰ってきてしまう状態です。
         
     | 
| 
       46 
46 
     | 
    
         
             
            検索しても、Goのセッション保存してのテストに関する結果がものすごく少なくて困っています。
         
     | 
| 
       47 
     | 
    
         
            -
            よろしくお願いします。
         
     | 
| 
      
 47 
     | 
    
         
            +
            よろしくお願いします。
         
     | 
| 
      
 48 
     | 
    
         
            +
            追記
         
     | 
| 
      
 49 
     | 
    
         
            +
            ↓こちらに、コードを載せてみました。Runで動作確認が可能です。
         
     | 
| 
      
 50 
     | 
    
         
            +
            https://go.dev/play/p/m7FR6ARljNA
         
     |