我编写了一些模拟用户活动的DART单元测试,并在其他检查中检查特定的可视元素(div或iframe)是否可见:
documentviewerDiv.hidden = true;
print('Checking if page panel is hidden');
test('Checking if page panel is hidden',(){
expect(documentviewerDiv.hidden, true);
});
如果元素在整个测试过程中保持隐藏状态,则结果与预期一致:
PASS
1 PASS Expectation: Checking if all UI components are present.
.....
3 PASS Expectation: Checking if page panel is hidden.
....
但是,如果元素的可见性在测试结束时发生变化,例如:
documentviewerDiv.hidden = false;
测试结果以这种方式动态更新(实际上,我可以看到旧结果被新结果替换):
1 PASS Expectation: Checking if all UI components are present.
...
3 FAIL Expectation: Checking if page panel is hidden. Expected: <true> Actual: <false>
package:unittest/src/expect.dart 75:29 expect
documentviewertest.dart 293:15 repositoryListComplete.<fn>
dart:async _asyncRunCallback
file:///E:/b/build/slave/dartium-win-full-stable/build/src/dart/tools/dom/src/native_DOMImplementation.dart 607 _handleMutation
每次其可见性发生变化并动态更新输出时,都会重新评估元素可见性的所有以前的测试。
如何防止此行为将成功的测试结果修改为不成功追溯?
以下是显示此行为的简单测试代码:
HTML部分:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TestChange</title>
<link rel="stylesheet" href="clickme.css">
</head>
<body>
<h1>TestChange</h1>
<div id="myDiv">
Now you see me
</div>
<script type="application/dart" src="clickme.dart"></script>
<script src="packages/browser/dart.js"></script>
</body>
</html>
DART部分:
import 'dart:html';
import 'package:unittest/unittest.dart';
import 'package:unittest/html_config.dart';
void main() {
useHtmlConfiguration();
var myDiv = querySelector("#myDiv");
myDiv.hidden = true;
test("Test visibility 1", (){
expect(myDiv.hidden, true, reason:"Is it still visible");
});
myDiv.hidden = false;
test("Test visibility 2", (){
expect(myDiv.hidden, false, reason:"Is it still invisible");
});
}
测试运行时,第一次测试报告为失败。如果注释掉myDiv.hidden = true,则第一次测试成功。
答案 0 :(得分:0)
正如我所看到的,问题是你设置了outside
测试的可见性。
test('sometext', () {
// some code
});
只是为要执行的测试列表添加一个闭包。 main方法中的外观不一定定义测试的执行顺序。
您的测试将按此执行
myDiv.hidden = true;
test("Test visibility 1", () ...) // register test "Test visibility 1"
myDiv.hidden = false;
test("Test visibility 2", () ...) // register test "Test visibility 2"
(){ expect(myDiv.hidden, true, reason:"Is it still visible"); }
(){ expect(myDiv.hidden, false, reason:"Is it still invisible"); }
<强> HINT 强>
import 'package:unittest/html_enhanced_config.dart';
useHtmlEnhancedConfiguration();
而不是
useHtmlConfiguration();
您可以更好地查看测试结果输出