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,
}
아니면 내가 Sinon이 할 수 있다고 생각 below..But로 모의 클래스를 쓸 수 있습니다 ..
class MockSensor {
getData() {
return {
heat: 123,
speed: 321
}
}
}
어떻게 sinon.createStubInstance를 사용하면 메소드를 스텁링 할 수 있습니까? – Tim