我有一个使用的库,CanvasElement因此依赖于它dart:html.现在我正在尝试为同一个库编写单元测试.但是,尝试运行它时出现以下错误:
The built-in library 'dart:html' is not available on the stand-alone VM.
Run Code Online (Sandbox Code Playgroud)
以下是我的测试文件的样子:
library PiflexUmlTest;
import 'package:PiflexUml/lib.dart';
import 'package:unittest/unittest.dart';
part 'src/geometry/vector_test.dart';
main () {
testVector();
}
Run Code Online (Sandbox Code Playgroud)
我知道它失败了,因为lib.dart文件中的库本身有一行说明:
library PiflexUml;
// ....
import 'dart:html';
part "blahblah.dart";
part "something_else.dart"
// ....
Run Code Online (Sandbox Code Playgroud)
尽管库本身依赖于它,但我并不是要尝试测试与HTML有关的类.
我的解决方案是什么?有没有办法只导入我想测试的类而不导入整个lib?或者我是否必须将我的lib拆分为依赖于html的部分和非HTML依赖部分?
您可以使用content_shell(无头浏览器)运行基于浏览器的单元测试.
DartEditor安装到的文件夹(darteditor/chromium/download_contentshell.sh)包含一个脚本文件,用于下载包含的部分content_shell.
您需要一个content_shell运行测试的HTML文件.HTML文件可能看起来像
<!doctype html>
<html>
<body>
<script src="packages/unittest/test_controller.js"></script>
<script type="application/dart" src="browser_tests.dart"></script> <!-- your unit tests -->
<script src="packages/browser/dart.js"></script> </body>
</html>
Run Code Online (Sandbox Code Playgroud)
飞镖单元测试
import 'package:unittest/unittest.dart';
import 'package:unittest/html_config.dart';
main() {
useHtmlConfiguration();
test('test scope', () {
...
});
}
Run Code Online (Sandbox Code Playgroud)
也许你的用例有点过分,但仍然是一个解决方案.
编辑
还有一个关于这个问题的讨论:https:
//groups.google.com/a/dartlang.org/forum/#!topic/misc/pacB66gnVcg
| 归档时间: |
|
| 查看次数: |
1370 次 |
| 最近记录: |