0
Iは、(私の実際のコード実装の簡略化)の下に書かれたサンプルコードは、この簡略化されたバージョンの主なアイデアを持っている私は依存性注入さSensor
クラスがどのようにユニットテストのクラスをスタブできSinonjs依存関係注入クラスをどのようにスタブするのですか?
理解することですContext
クラスには、Sensor
は、IO
ポートからデータを取得します。
センサーデータは、ComputeSensor
クラスで期待値と比較され、context.report
オブジェクトに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,
}
それとも私がSinonはそれを行うことができると思いbelow..Butとしてモッククラスを書くことができ..
class MockSensor {
getData() {
return {
heat: 123,
speed: 321
}
}
}
sinon.createStubInstanceを使用する場合、どのようにスタブすることができますか? – Tim