0
我的示例代碼寫在下面(從我的實際代碼實現簡化),這個簡化版的主要思想,就是要明白,我怎麼能存根類的單元測試Sinonjs如何對依賴注入類進行存根?
我有Sensor
類,這是依賴注入到Context
類,這個Sensor
將從一些IO
端口獲得數據。
傳感器數據將在ComputeSensor
類別上進行比較以獲得預期值,並且會將report
鍵值插入到context.report
對象中。
我可以知道我該如何殘留或模擬Sensor
類,所以我可以創建一個假的值來測試代碼?
class Sensor {
getData() {
return {
heat: this.getHeatSensor(), // get data from some IO
speed: this.getSpeedSensor() // get data from some IO
}
}
}
class Context {
constructor(sensor) {
this.report = {};
this.sensor = sensor;
this.computeSensor = new ComputeSensor();
}
execute() {
this.computeSensor.compute(this, this.sensor.getData());
}
}
class ComputeSensor {
compute(context, sensorData) {
if (sensorData.heat === 123
&& sensorData.speed === 321)
{
context.report = {
sensor: 'ok'
}
}
}
}
const sensor = new Sensor();
const context = new Context(sensor);
context.execute();
console.log(context.report) // { sensor: 'ok }
也許想要的存根代碼會是這樣嗎?
const stubSensor = sinon.createStubInstance(Sensor);
// Inject the stub return value here?
stubSensor.getData() = {
heat: 123,
speed: 321,
}
或者,我可以寫一個模擬類作爲below..But我覺得興農能做到這一點..
class MockSensor {
getData() {
return {
heat: 123,
speed: 321
}
}
}
如何使用sinon.createStubInstance存根方法? – Tim