gpt4 book ai didi

dart - 内置库 'dart:html'在独立VM上不可用

转载 作者:行者123 更新时间:2023-12-03 03:18:21 25 4
gpt4 key购买 nike

我希望能够对我的自定义聚合物元素进行单元测试。

给定lib / web_components中的组件:

class Foo extends PolymerElement {
Foo.created() : super.created();
}

并在test / web_components中进行测试:
main() {
test("Should Be a PolymerElement", (){
Foo undertest = new Foo.created();

expect(undertest, new isInstanceOf<PolymerElement>());
});
}

运行测试会导致标题中提到的错误。如何避免此错误?

编辑:

因此,我尝试在客户端测试文件的顶部添加 @TestOn('content-shell'),并将 @TestOn('vm')添加到服务器端测试。

在Grinder中,我有:
@Task('Test')
test() {
new PubApp.local('test').run([]);
new PubApp.local('test').run(["-p", "content-shell"]);
}

服务器端测试运行正常,但客户端测试抛出以下错误:
pub run test -p content-shell test/web_component/foo_test.dart
"Failed to start content shell: No such file or directory"

编辑2:

我尝试使用以下命令在dartium平台中运行,因为content-shell似乎不起作用:
pub run test:test -p dartium test/web_component/foo_test.dart

结果是:
Failed to load "test/web_component/foo_test.dart": type 'test.backend.declarer.Declarer' is not a subtype of type 'test.backend.declarer.Declarer' of 'function result'.
packages/test/test.dart 44:32 _declarer
packages/test/test.dart 108:5 test
foo_test.dart 9:3 main
package:test IframeListener.start
foo_test.dart.browser_test.dart 6:18 main

最佳答案

您需要为测试创建一个html页面,然后在浏览器中运行该测试。新的test软件包具有不错的自述文件,解释了如何执行此操作。 (我有一个浏览器经常测试超时的问题。这是一个已知问题,可能很快就会解决。)

更新
有关如何动态创建Polymer元素的信息,请参见Instantiating polymer element via dart codeDynamically create polymer element

代替main()使用

@whenPolymerReady
init() {
@TestOn('content-shell')可以,但是最好使用 @TestOn('browser'),然后使用 -p参数指定具体的浏览器( -pchrome-pdartium-pfirefox-pcontent-shell,...有关支持的浏览器的列表,请参阅测试自述文件)。您一次可以传递多个 -p,以在多个浏览器上运行测试。

您也可以使用自定义HTML页面进行测试
<!doctype html>
<!-- custom_html_test.html -->
<html>
<head>
<title>browser/polymer test</title>
<link rel="import" href="app_element.html">
<link rel="import" href="child_element.html">
<link rel="x-dart-test" href="html_test.dart">
<script src="packages/test/dart.js"></script>
</head>
<body>
<div id="granny">
<div>
<div id="parent">
<div>
<div id="child">child</div>
</div>
</div>
</div>
</div>
<app-element id="polymer-parent" unresolved>
<child-element id="polymer-child"></child-element>
</app-element>
</body>
</html>

其中文件名必须与Dart测试文件相同,但 .html作为文件扩展名,而 <link rel="x-dart-test" href="html_test.dart">则指的是Dart测试文件。 app-elementchild-element是我在测试中使用的Polymer元素(例如Foo)

另一个更新
我假设您 需要来使用自定义HTML文件(尚未尝试过)进行Polymer测试,因为否则无法注册转换器的入口点。
然后将html文件作为入口点添加到 pubspec.yaml中的Polymer转换器部分

关于dart - 内置库 'dart:html'在独立VM上不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30180683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com