Có cách nào thuận tiện để giả lập các đối tượng Yêu cầu và Trả lời HTTP cho các phần mềm kiểm tra đơn vị không?node.js: Yêu cầu và phản hồi http giả
Trả lời
Tôi đang sử dụng nodejutsu giả:
https://github.com/nodejitsu/mock-request
Có lẽ đây là những gì bạn đang tìm kiếm.
Dự án không được chấp nhận. Đề nghị là sử dụng "nock" https://github.com/flatiron/nock –
nock không hoạt động để khôi phục các yêu cầu http. – Kevin
tôi đã viết một thư viện để thử ra các câu trả lời các yêu cầu thực hiện thông qua HTTP tiêu chuẩn hoặc thông qua các mô hình yêu cầu:
Dường như cả hai https://github.com/howardabrams/node-mocks-http và https://github.com/vojtajina/node-mocks có thể được sử dụng để tạo mô hình http.ServerRequest
và http.ServerResponse
các đối tượng.
node-mocks-http trông giống như một giải pháp tuyệt vời cho bài đăng gốc. – newz2000
Ok, chỉ cần đi qua điều này, nút-mocks-http là tuyệt vời. (Theo như trình xử lý yêu cầu thử nghiệm mà không thực sự yêu cầu http) –
Từ thẻ, có vẻ như câu hỏi này là về Express. Trong trường hợp đó, supertest là rất tốt:
var request = require('supertest')
, express = require('express');
var app = express();
app.get('/user', function(req, res){
res.send(201, { name: 'tobi' });
});
request(app)
.get('/user')
.expect('Content-Type', /json/)
.expect('Content-Length', '20')
.expect(201)
.end(function(err, res){
if (err) throw err;
});
Để sử dụng Node chung, Flatiron Nock trông giống như một lựa chọn tốt:
var nock = require('nock');
var example = nock('http://example.com')
.get('/foo')
.reply(200, { foo: 'bar' });
var http = require('http');
var options = {
host: 'example.com',
port: 80,
path: '/foo',
method: 'GET'
}
var req = http.request(options, function(res) {
res.on('data', function(chunk) {
console.log('BODY: ' + chunk);
});
});
req.on('error', function(e) {
console.log('error: ' + e);
});
req.end();
Output:
BODY: { "foo": "thanh "}
+1 cho nock, công cụ rất hữu ích. – undefined
Đây là một bài đăng cũ. Nhưng tôi có một câu hỏi. supertest, trong đó có 'yêu cầu (app)', dường như để bắt đầu một máy chủ (https://github.com/tj/supertest/blob/master/index.js#L20), và nó không phải là giả mạo http reqeusts. Điều đó có đúng không? – NullSpace
Kiểm tra https://github.com/timsavery/node-hmock hoặc npm install hmock
... bất kỳ phản hồi nào được chào đón! Các giải pháp đã làm việc tốt cho tôi cho đến nay.
Mockery có vẻ tuyệt vời cho việc này.
Về cơ bản nó chiếm đoạt các cuộc gọi require
và trả về một đối tượng/hàm khác mà bạn chỉ định.
Tôi khuyến khích bạn sử dụng motty. tại sao chúng ta cần một mã khác?
- 1. Tên yêu cầu HTTP + Phản hồi
- 2. Cách gửi yêu cầu HTTP POST và nhận phản hồi?
- 3. Đăng nhập jax-ws http yêu cầu và phản hồi
- 4. Mã hóa phản hồi với mô-đun "yêu cầu" node.js
- 5. Nhận tiêu đề phản hồi từ yêu cầu HTTP Ruby
- 6. Gửi yêu cầu HTTP và nhận phản hồi HTTP bằng cách sử dụng javascript
- 7. Phản hồi HTTP thích hợp để gửi yêu cầu yêu cầu SSL/TLS
- 8. Vấn đề unicode Node.js với nội dung phản hồi HTTP
- 9. WCF và các yêu cầu và phản hồi trực tuyến
- 10. WebSocket yêu cầu-phản hồi subprotocol
- 11. Python có mô-đun để phân tích các yêu cầu và phản hồi HTTP không?
- 12. JSoup: Yêu cầu phản hồi JSON
- 13. Gửi yêu cầu http trong node.js
- 14. Yêu cầu PUT HTTP với Node.js
- 15. Thiết bị đánh chặn yêu cầu/phản hồi toàn cầu
- 16. Phản hồi HTTP cho các phương thức HTTP không được hỗ trợ với Node.js?
- 17. Xử lý nhiều yêu cầu HTTP song song trong Node.js
- 18. Tùy chọn không chặn Akka khi phản hồi HTTP được yêu cầu
- 19. đo thời gian yêu cầu http với node.js
- 20. Proxy Node.js có khả năng thay đổi tiêu đề phản hồi và thêm dữ liệu yêu cầu bổ sung
- 21. Kết nối mô hình yêu cầu/phản hồi http với hàng đợi không đồng bộ
- 22. Phản hồi đúng yêu cầu HEAD HTTP trên trang web chỉ có HTTPS
- 23. Nhận phản hồi của yêu cầu http mà không có độ dài nội dung?
- 24. Làm cách nào để tôi có thể đệm phản hồi http bằng mô-đun yêu cầu?
- 25. Cặp yêu cầu-phản hồi được gọi là gì?
- 26. Mã phản hồi HTTP khi yêu cầu subsotot websocket không được hỗ trợ/nhận dạng
- 27. Tất cả các yêu cầu nhận lỗi HTTP 401.2 - Phản hồi trái phép
- 28. làm cách nào để kiểm tra mã trạng thái phản hồi yêu cầu http từ iOS?
- 29. Mã phản hồi HTTP thích hợp cho yêu cầu không có trường bắt buộc
- 30. libcurl Yêu cầu HTTP để lưu phản hồi vào biến - C++
Có lý do nào khiến bạn không bao gồm các yêu cầu HTTP thực trong trường hợp kiểm tra của mình không? Nên reallx khả thi trong một thiết lập thử nghiệm async. –
Tôi đã đi với điều đó, nhưng phải trung thực nó không cảm thấy giống như một bài kiểm tra đơn vị, nó giống như một trong những tích hợp. Dù sao, cho đến nay đó là lựa chọn tốt nhất của tôi. – 7elephant
Tôi không muốn bao gồm các yêu cầu http thực vì nó làm cho các bài kiểm tra của tôi chậm hơn và ít đáng tin cậy hơn. Ví dụ, nếu một trong các dịch vụ tôi gọi là DB được hỗ trợ, và nó không thành công vì DB trong QA đã bị xóa sổ (hoặc đồng bộ hóa với sản phẩm, hoặc bất cứ điều gì) thì các thử nghiệm của tôi bắt đầu thất bại. Ngoài ra nếu bạn không giả lập nó gần như không thể tin cậy buộc các trường hợp lỗi nhất định xảy ra. Không, tôi thích mocks - họ làm cho thử nghiệm dễ dàng hơn và đáng tin cậy hơn. – Kevin