测试套件,用于针对Google Smart Home错误的操作

时间:2019-09-30 03:42:04

标签: node.js actions-on-google google-smart-home

我正在实施智能家居操作,并且在 Test Suite 上运行测试时,在亮度特征测试期间收到以下错误消息:

Starting test...
  Utterance (1/1): Ok Google. Set the Dimmer brightness to 75 percent . . . . . . . . . . . . . . . . . . . . FAIL
AssertionError: Expected state to include: {"brightness":{"xRange":[55,95]}}, actual state: {"on":true}: expected false to be true

所有onoff请求都可以正常工作,并且测试套件也不会抱怨,只需说“ PASS”即可。

但是BrightnessAbsolute请求已由我的后端应用程序成功接收并处理(并且甚至可以看到 Test Suite 运行时灯光已更改),返回JSON响应回到文档中描述的格式。

请求:

{
   "inputs":{
      "0":{
         "context":{
            "locale_country":"CA",
            "locale_language":"en"
         },
         "intent":"action.devices.EXECUTE",
         "payload":{
            "commands":{
               "0":{
                  "devices":{
                     "0":{
                        "id":"xxxxxxxx"
                     }
                  },
                  "execution":{
                     "0":{
                        "command":"action.devices.commands.BrightnessAbsolute",
                        "params":{
                           "brightness":75
                        }
                     }
                  }
               }
            }
         }
      }
   },
   "requestId":"12608597522424949295"
}

响应:

{
   "requestId":"12608597522424949295",
   "payload":{
      "commands":{
         "0":{
            "ids":{
               "0":"xxxxxxxx"
            },
            "status":"SUCCESS",
            "states":{
               "on":true,
               "brightness":75,
               "online":true
            }
         }
      }
   }
}

有人对如何通过 Test Suite 通过此测试有任何想法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

测试套件根据Home Graph中报告的状态针对每个被测设备验证命令。请务必注意,EXECUTE响应仅用于向用户提供直接结果(即通过Home应用中的Assistant或UI发出的语音),并且这些响应不会更新Home Graph状态< / strong>。当前,只有Report State API会更新给定设备的Home Graph。

由于需要报告状态来更新Home Graph,因此最好在SYNC之后调用API,以向Home Graph提供设备的初始状态。如果您仅在更改时调用报告状态(即,当命令设备处于其已进入的状态时,则不这样),这一点尤其重要。这可能是您正在经历的事情,因为测试套件报告说Home Graph中没有亮度值。

如果您不遵循此模式,则在每个EXECUTE之后调用Report State还将确保Home Graph是最新的,但是这将需要您进行更多的API调用。