如何在 dart 中测试流?我有这个代码:
test('words are reading sequentially correct', () {
WordTrackerInterface wordTracker = WordTracker.byContent('0 1 2');
wordTracker.setWordsCountPerChunk(1);
var stream = wordTracker.nextWordStringStream();
expect(
stream,
emitsInOrder(List<Word>.generate(
6, (i) => i > 2 ? Word('') : Word(i.toString()))));
for (int i = 0; i < 6; i++) {
wordTracker.nextWord();
}
});
Run Code Online (Sandbox Code Playgroud)
我需要测试该成员数据Word::content这是一个String等于在所提供的emitsInOrder。
类似于以下内容的流:
expect(
stream,
emitsInOrder(List<Word>.generate(
6, (i) => i > 2 ? Word('') : Word(i.toString()))),
expect((Word actual, Word expected) {
return actual.content == expected.content;
}));
Run Code Online (Sandbox Code Playgroud) 有人可以告诉我,为什么事件会被激活两次以下代码:http: //jsfiddle.net/m8heyzgz/3/ 请打开你的控制台,firefox或chrome有控制台并在点击'div1'后观察结果,那么事件遍历顺序将是:
据我所知,捕获阶段可以从上到下,冒泡阶段可以从目标到父节点.
我的问题为什么,它以相同的顺序被解雇了2次?
HTML:
<div id="div1">
<div id="div2">
<div id="div3">
<form>
<ul>
<li>
<label>
<div>
<div>div1</div>
</div>
<div>
<div>div2</div>
</div>
<div>
<input type="checkbox" name="div3" value="div3" />
</div>
</label>
</li>
</ul>
</form>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
var d1 = document.getElementById('div1');
var d2 = document.getElementById('div2');
var d3 = document.getElementById('div3');
var f = function(e) {
console.log(e.currentTarget);
}
d1.addEventListener('click', f);
d2.addEventListener('click', f);
d3.addEventListener('click', f);
Run Code Online (Sandbox Code Playgroud)