2016-07-26 44 views
0

這兩個都有相同的用途嗎?爲什麼它們都用於例如本教程https://codeforgeek.com/2015/07/unit-testing-nodejs-application-using-mocha/Supertest .expect(200)vs 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

歡迎來到Stack Overflow!您能否詳細說明您的問題,比如代碼或其他事情,以便人們能夠儘早解決問題並幫助您?謝謝! – manetsus

+0

修改了我的問題,希望它更清楚! –

回答

1

.expect(200)部分使用supertest設施驗證數據。 object.should.equal(value)部分正在使用shouldJS進行驗證。

我更喜歡在.end()中使用shouldJS,因爲它允許我根據需要執行一些數據操作,測試,日誌記錄等。他們將返回斷言爲錯誤的.END - 如果您使用的是.END()方法.expect()失敗不會拋出斷言https://www.npmjs.com/package/supertest

請注意從以下() 回電話。

因此,在示例代碼中你上面顯示,如果.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(); 
     }); 
    }); 

}); 

更新回答在評論的問題,在這裏提供了一個漂亮的迴應:

問:會做這樣的事情.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響應',功能(完成){ 請求(app) .get('/ user') 。('Accept','application/json') .expect('Content-Type',/ json /) .expect(200,done); }); });' – Machtyn