Dar*_*ryn 7 javascript tdd unit-testing node.js sinon
我正在使用elasticsearch,并希望为以下代码编写单元测试:
import * as elasticsearch from "elasticsearch";
import config from "../config";
const client = new elasticsearch.Client({
host: config.elasticsearch.host,
log: "trace"
});
export function index(data) {
return new Promise((resolve, reject) => {
client.create({
index: "myindex",
type: "mytype",
id: booking.urn,
body: data
}).then(resolve, reject);
});
}
Run Code Online (Sandbox Code Playgroud)
我熟悉mocha和sinon,但是我不知道client.create在这种情况下使用stub\mock的好模式.
任何人都可以建议我可以使用的方法吗?
一种可能的选择是使用proxyquire+ sinon组合
诗乃将伪造Client:
const FakeClient = sinon.stub();
FakeClient.prototype.create = sinon.stub().returns("your data");
var fakeClient = new FakeClient();
console.log(fakeClient.create()); // -> "your data"
Run Code Online (Sandbox Code Playgroud)
这样的假客户端可以通过注入传递到被测模块中proxyquire:
import proxyquire from 'proxyquire';
const index = proxyquire('./your/index/module', {
'elasticsearch': { Client: FakeClient }
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3939 次 |
| 最近记录: |