Javascript Google单元测试看起来像是自定义语法

Javascript Google单元测试看起来像是自定义语法,javascript,google-chrome,v8,Javascript,Google Chrome,V8,看看谷歌的眨眼单元测试。我注意到在大多数代码中都有以下代码 accessibilityController.accessibleElementById('some-id').decrement(); 现在我想弄清楚这是什么。在我看来,这是一个单独的东西,看起来它被添加到编译器(v8)中,以便使这些单元测试顺利进行 要使用的文件接缝 $HOME/chromium/src/content/shell/test\u runner/accessibility\u controller.cc 因此,如果

看看谷歌的眨眼单元测试。我注意到在大多数代码中都有以下代码

accessibilityController.accessibleElementById('some-id').decrement();
现在我想弄清楚这是什么。在我看来,这是一个单独的东西,看起来它被添加到编译器(v8)中,以便使这些单元测试顺利进行

要使用的文件接缝
$HOME/chromium/src/content/shell/test\u runner/accessibility\u controller.cc

因此,如果是这样的话,我的问题如下:因为我正试图将这些测试引入到我的应用程序中,而且我最确定的是,我不想在v8中使用一些滑稽的附加组件。我怎么写这行字

accessibilityController.accessibleElementById('some-id').decrement();

在纯v8可编译javascript中。此外,这个“Access”控制器的确切含义是什么,因为我的C++没有Par,我不能发现它。

< P>这不是完全自定义的语法,它只是一个JavaScript代码可以与之交互的嵌入对象提供的对象。 V8的每个嵌入式程序都提供自己的对象和/或函数。例如,Node.js提供
进程
,浏览器/Chromium提供
文档
,“d8”shell具有
quit()
功能。您发现的是“content_shell”,它是一个用于运行测试的简单Blink+V8嵌入式程序,提供了一些自己的功能

在您自己的嵌入式程序中,您也可以实现它,或者您必须编辑要执行的脚本,以便它们不会使用您的嵌入式程序中不可用的功能。一个更简单的解决方法是加载一个简单的polyfill来模拟此类调用,例如:

var accessibilityController = {
  accessibleElementById: function() { 
    return {
      decrement: function(){}
    }
  }
}
在执行导入的测试之前

没有办法用“纯JavaScript”来写这一行,就像没有办法用纯JavaScript来表达
document.createElement(…)
一样——你总是需要一个浏览器来提供
document
对象。(当然,您可以创建一个完整的伪DOM实现,但它仍然不会出现在屏幕上,所以这不是一回事。)好的一面是,如果您不知道“accessibilityController”可能会做什么,那么您可能不需要它


(现有示例:d8以前有一个自定义的
print()
函数,而不是
console.log
,但是我们发现能够运行使用
console.log
的脚本而不必手动修改它们非常有用,因此我们最终将
console.log
添加到d8中。)

这看起来不像是自定义语法,只是一些内部对象。我也这么认为,但我找不到定义,我认为accessibility_controller.cc中的这一行定义了它
global->Set(context,gin::StringToV8(隔离,“accessibilityController”)、bindings.ToV8()。Check()
因此不可能在chrome的控制台中调用此函数,因为它只是嵌入在blink+v8中。这是正确的说法吗?正确,Chrome中没有特定于内容的东西。