【发布时间】:2017-07-08 11:17:42
【问题描述】:
我在下面编写了示例代码(从我的实际代码实现中进行了简化),这个简化版本的主要思想是了解如何为类存根以进行单元测试
我有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,
}
或者我可以写一个模拟类如下..但我认为诗乃可以做到这一点..
class MockSensor {
getData() {
return {
heat: 123,
speed: 321
}
}
}
【问题讨论】:
标签: javascript unit-testing mocha.js sinon stub