我正在使用 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);
});
}
我熟悉 mocha 和 sinon,但是我不知道在这种情况下使用 stub\mock client.create
的好的模式。
任何人都可以建议我可以使用的方法吗?
最佳答案
一个可能的选择是使用 proxyquire
+ sinon
组合
Sinon 将伪造 Client
:
const FakeClient = sinon.stub();
FakeClient.prototype.create = sinon.stub().returns("your data");
var fakeClient = new FakeClient();
console.log(fakeClient.create()); // -> "your data"
这样的假客户端可以通过proxyquire
注入(inject)被测试模块:
import proxyquire from 'proxyquire';
const index = proxyquire('./your/index/module', {
'elasticsearch': { Client: FakeClient }
});
关于javascript - 如何在 Node.js 中模拟 elasticsearch 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42135596/