Ric*_*ich 12 javascript mocha.js redis node.js sinon
我在node.js工作.我的应用程序通过node_redis
模块与Redis交互.我正在使用mocha和sinon自动测试我的应用程序.我的应用程序看起来像这样:
...snip
var redisClient = redis.createClient(redisPort, redisHost);
var someValue = redisClient.get("someKey");
return someValue;
....
Run Code Online (Sandbox Code Playgroud)
我想将调用存根到redisClient.get().要做到这一点,我还需要将调用存根到redis.createClient() - 我想......这是我的测试代码:
...
var redis = require("redis");
var redisClient;
...
sinon.stub(redisClient, 'get').returns("someValue");
sinon.stub(redis, "createClient").returns(redisClient);
...
assert.equal(redis_client_underTest.call_to_redis(), "someValue");
...
Run Code Online (Sandbox Code Playgroud)
测试失败了 AssertionError: false == "someValue"
我该如何存根redisClient
,或者这甚至可能?
你可以做的是使用像Proxyquire或Rewire这样的东西.我将使用重新布线作为示例.
您想要存根的代码片段:
var redisClient = redis.createClient(redisPort, redisHost);
var someValue = redisClient.get("someKey");
return someValue;
Run Code Online (Sandbox Code Playgroud)
然后在你的测试中你可以使用重新连线:
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);
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以更换redisClient,如果调用该函数,您可以检查间谍.
归档时间: |
|
查看次数: |
4529 次 |
最近记录: |