node.js - supertest如何设置session和cookie?
PHPz
PHPz 2017-04-17 14:22:38
0
1
950

我看文档设置cookie 是这么写的

var request = require('supertest')
   , should = require('should')
   , express = require('express')
   , cookieParser = require('cookie-parser');


describe('request.agent(app)', function(){
  var app = express();
  app.use(cookieParser());

  app.get('/', function(req, res){
    res.cookie('cookie', 'hey');
    res.send();
  });

  app.get('/return', function(req, res){
    if (req.cookies.cookie) res.send(req.cookies.cookie);
    else res.send(':(')
  });

  var agent = request.agent(app);

  it('should save cookies', function(done){
    agent
    .get('/')
    .expect('set-cookie', 'cookie=hey; Path=/', done);
  })

  it('should send cookies', function(done){
    agent
    .get('/return')
    .expect('hey', done);
  })
})

这里的

expect('set-cookie', 'cookie=hey; Path=/', done)

'set-cookie'是指操作,然后'cookie=hey; Path=/'这个是cookie值的样子,但是我看api,并没有这种说明,也同样没有说能获取

expect('hey', done); 

cookie值的说明
https://github.com/visionmedia/supertest#api

那么session又该如何设置呢?

PHPz
PHPz

学习是最好的投资!

全員に返信(1)
刘奇

cookiehey はここで設定されます:

リーリー

expect('hey', done);このアサーションが成功する理由は、テスト ケースが書かれた順序によれば、前の should save cookies ケースが最初に実行され、次に cookie が正常に設定され、その後で実行されるためです。この場合、2 番目のサーバー部分が実行されます:

リーリー

sessionの設定方法としては、まず対応するミドルウェアセッションが必要です

補足:

スーパーテストはアサーション部分を比較的明確に説明しています:

私が選択した部分は、cookieを主張するために使用できる部分です。あなたが「見て見ぬふり」をするのは、作成中にcookieの中にhttpが存在することを知らないからです。 header 送信プロセス。 (基本については、学ぶべきことは学ぶことです。これは積み重ねが必要であり、「偉い人」のアドバイスに頼るだけでは得られません)

「スーパーテストが Cookie とセッションを直接操作できるかどうかはわかりません。」もありますが、もちろんそうではありません。テスト ケースを調べたところ、supertest は実際にはクライアントのリクエストをシミュレートするためのツールであることがわかりました。クライアントなので当然設定できませんsessionsession はバックエンドによって処理されるため、バックエンド部分にミドルウェア処理を追加する必要があると言えます。 (session とは何かについては、まだ基礎的な部分です。これは問題ありません。たとえ 1,000 語話しても、完全に明確に説明することはできないかもしれませんし、一般の人に読んでもらうことに興味がないかもしれません。基礎は必要です、グループには基礎が存在しないときに「偉い人」が突然神になることはありません)

session に関しては、数日前に質問に回答したばかりですが、自動ログインを実現するために Express-session と Passportjs は何をしましたか?

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート