Những gì bạn có thể làm là sử dụng một cái gì đó như Proxyquire hoặc Rewire. Tôi sẽ sử dụng rewire cho ví dụ.
Đoạn mã của bạn mà bạn muốn tạo ra:
var redisClient = redis.createClient(redisPort, redisHost);
var someValue = redisClient.get("someKey");
return someValue;
Sau đó, trong thử nghiệm của bạn, bạn có thể sử dụng rewire:
var Rewire = require('rewire');
var myModule = Rewire("../your/module/to/test.js");
var redisMock = {
get: sinon.spy(function(something){
return "someValue";
});
};
myModule.__set__('redisClient', redisMock);
Bằng cách này, bạn có thể thay thế redisClient của mình và bạn có thể kiểm tra với gián điệp xem chức năng có được gọi hay không.