2016-07-26 9 views
0

これらの両方が同じ目的を果たしますか?なぜ彼らは両方とも、このチュートリアルhttps://codeforgeek.com/2015/07/unit-testing-nodejs-application-using-mocha/で使用されていますか?Supertest .expect(200)対res.status.should.equal(200);

編集は、次のコードを見てみると:

var supertest = require("supertest"); 
var should = require("should"); 

// This agent refers to PORT where program is runninng. 

var server = supertest.agent("http://localhost:3000"); 

// UNIT test begin 

describe("SAMPLE unit test",function(){ 

    // #1 should return home page 

    it("should return home page",function(done){ 

    // calling home page api 
    server 
    .get("/") 
    .expect("Content-type",/json/) 
    .expect(200) // THis is HTTP response 
    .end(function(err,res){ 
     // HTTP status should be 200 
     res.status.should.equal(200); 
     // Error key should be false. 
     res.body.error.should.equal(false); 
     done(); 
    }); 
    }); 

}); 

はそれが

.expect(200) 

res.status.should.equal(200); 

を持っていることが必要ですか?違いはなんですか?

+0

ようこそスタックオーバーフロー!コードや何かのような努力をして、人々があなたの問題を早期に理解して助けることができるように、あなたの質問を精緻化してください。ありがとう! – manetsus

+0

私の質問を改訂しました。うまくいけばもっと明確です! –

答えて

1

.expect(200)部分がデータを検証するためのsupertest機能を使用しています。 object.should.equal(value)部分は検証のためにshouldJSを使用しています。

私は、必要に応じて少しのデータ操作、テスト、ロギングなどを行うことができるので、.end()内のshouldJSを使用する方が好きです。

から次の点に注意してください:あなたが失敗.END()メソッド.expect()アサーションを使用している場合はhttps://www.npmjs.com/package/supertest

はスローされません - 彼らは.ENDにエラーとしてアサーションを返します。 () 折り返し電話。

ので、例のコードでは、あなたは.expect("Content-type",/json/)または.expect(200)が失敗した場合、.END()それをキャッチするためには何もありません、上記示しました。より良い例は次のようになります。

var supertest = require("supertest"); 
var should = require("should"); 

// This agent refers to PORT where program is runninng. 

var server = supertest.agent("http://localhost:3000"); 

// UNIT test begin 

describe("SAMPLE unit test",function(){ 

    // #1 should return home page 

    it("should return home page",function(done){ 

    // calling home page api 
    server 
     .get("/") 
     .expect("Content-type",/json/) 
     .expect(200) // THis is HTTP response 
     .end(function(err,res){ 
     // NOTE: The .expect() failures are handled by err and is 
     //  properly passed to done. You may also add logging 
     //  or other functionality here, as needed. 
     if (err) { 
      done(err); 
     } 

     // Error key should be false. 
     res.body.error.should.equal(false); 
     done(); 
     }); 
    }); 

}); 

Updateはコメントで質問に答えると、ここできれいな応答を提供する:

質問:ですが、エラーを.expect(200, done)キャッチのようなものをやってましたか?

回答:短い答えは「はい」です。私は上記引用し、同じページで、それは次のようにあります。

ここではモカとの例です、あなたが.expectのいずれかを( ためにまっすぐ行って渡すことができますどのように注意してください)を呼び出します:

describe('GET /user', function() { 
    it('respond with json', function(done) { 
    request(app) 
     .get('/user') 
     .set('Accept', 'application/json') 
     .expect('Content-Type', /json/) 
     .expect(200, done); 
    }); 
}); 
+0

'expect(200、done)'のようなことをしたら、エラーを捕まえることができますか? –

+0

短い答えは「はい」です。 mochaの例を示します。.expect()呼び出しのいずれにもそのまま渡すことができます。 describe( 'GET/user'、function() { これは(jsonと応答し、function(done){ リクエスト(app) .get( '/ user') です。.expect( 'Content-Type'、/ json /) .expect(200、done); set( 'Accept'、 'application/json') }); }}); ' – Machtyn