Tha*_*you 19 sockets mocking mocha.js node.js
我正在尝试创建一个虚拟套接字,用于我的一些测试
var net = require("net");
var s = new net.Socket();
s.on("data", function(data) {
console.log("data received:", data);
});
s.write("hello!");
Run Code Online (Sandbox Code Playgroud)
得到这个错误
错误:此套接字已关闭.
我也试过创建套接字
var s = new net.Socket({allowHalfOpen: true});
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
作为参考,完整的测试看起来像这样
it("should say hello on connect", function(done) {
var socket = new net.Socket();
var client = Client.createClient({socket: socket});
socket.on("data", function(data){
assert.equal("hello", data);
done();
});
client.connect();
// writes "hello" to the socket
});
Run Code Online (Sandbox Code Playgroud)
Joh*_*ams 34
我不认为服务器处于监听状态.这就是我用的..
// server
require('net').createServer(function (socket) {
console.log("connected");
socket.on('data', function (data) {
console.log(data.toString());
});
})
.listen(8080);
// client
var s = require('net').Socket();
s.connect(8080);
s.write('Hello');
s.end();
Run Code Online (Sandbox Code Playgroud)
仅限客户..
var s = require('net').Socket();
s.connect(80, 'google.com');
s.write('GET http://www.google.com/ HTTP/1.1\n\n');
s.on('data', function(d){
console.log(d.toString());
});
s.end();
Run Code Online (Sandbox Code Playgroud)
试试这个.
生产代码app.js:
var net = require("net");
function createSocket(socket){
var s = socket || new net.Socket();
s.write("hello!");
}
exports.createSocket = createSocket;
Run Code Online (Sandbox Code Playgroud)
测试代码: test.js:(Mocha)
var sinon = require('sinon'),
assert = require('assert'),
net = require('net'),
prod_code=require('./app.js')
describe('Example Stubbing net.Socket', function () {
it("should say hello on connect", function (done) {
var socket = new net.Socket();
var stub = sinon.stub(socket, 'write', function (data, encoding, cb) {
console.log(data);
assert.equal("hello!", data);
done();
});
stub.on = socket.on;
prod_code.createSocket(socket);
});
});
Run Code Online (Sandbox Code Playgroud)