私はテストの世界から始めていますが、まだ理解できない疑問があります。それぞれをグーグルで検索しましたが、役立つものは見つかりませんでした。
次のオブジェクトがある場合、サーバー上の接続されたデバイスを管理する責任がある場合、どのテストを作成するのが理にかなっており、これらのテストをどのように作成する必要がありますか?
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);
}
}
これまでのところ、オブジェクトに必要な動作は次のとおりです。私の質問は次のとおりです。
オブジェクトには、デバイスをアタッチおよびデタッチするための 2 つのメソッドがあります。私が読んだことから、テストで「プライベート」を使用するべきではないため、_devices オブジェクトをチェックして、メソッドが想定どおりに動作しているかどうかを確認できなかったと思います。何も返さないので、これらのメソッドをどのようにテストすればよいですか? または、それらをまったくテストしないでください。
sendCommand メソッドも void を返すメソッドです。オブジェクトの状態をまったく変更しない void メソッドをテストする方法について、まだ混乱しています。デバイスメソッドをスパイして performTask が正しく呼び出されているかどうかを確認する場合、(ユニットではなく) 統合テストを行うことになりますか?
私がはっきりしていたことを願っています。
ありがとう