我开始测试世界,但仍有一些我无法弄清楚的疑问。我用谷歌搜索了每一个,但找不到任何有用的东西。
如果我有以下对象,它的责任是管理我的服务器上的连接设备,为它编写哪些测试是有意义的,我应该如何编写这些测试?
var devicesManager = {
_devices: {},
attachDevice: function(device) {
_devices[device.id] = device;
},
detachDevice: function(device) {
delete _devices[device.id];
},
sendCommand: function(device_id, command) {
devices[device_id].performTask(command);
}
}
到目前为止,这些是我需要的对象的行为。我的问题是:
该对象有两种方法仅用于附加和分离设备。从我读过的内容来看,我不应该在我的测试中使用任何“私有”的东西,所以我认为我无法检查 _devices 对象来查看这些方法是否在做它们应该做的事情。由于他们不返回任何东西,我应该如何测试这些方法?还是我根本不应该测试它们?
sendCommand 方法也是一个 void 返回方法。我仍然对如何测试根本不改变对象状态的 void 方法感到困惑。如果我监视设备方法以检查 performTask 是否被正确调用,我会进行集成测试(而不是单元测试)吗?
我希望我很清楚。
谢谢