testing - 强制流事件传递

标签 testing dart

我正在尝试在我的服务中测试流事件,但遇到了一个问题:有什么方法可以在异步流中同步传送事件?这是简化的代码示例:

test("deliver event", () {
  StreamController sc = new StreamController();
  String v = "old";
  sc.stream.listen((val) {v = val;});
  sc.add("new");
  expect(v, "new"); // test fails: actual value is "old"
});

最佳答案

你不能从异步到同步。

import 'dart:async';
Future main() async {
  StreamController sc = new StreamController();
  String v = "old";
  var subscr = sc.stream.listen((val) { v = val;});
  sc.add("new");
  subscr.asFuture().then((_) {
    print('assert v == "new": ${v == 'new'}'); 
    // expect(v, "new"); // test fails: actual value is "old"
  });
  sc.close();
}

DartPad example

关于testing - 强制流事件传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38916001/

相关文章:

regex - dart 支持 perl 风格的正则表达式和匹配运算符语法吗?

android - Composer 的损坏测试报告

javascript - 在所有浏览器中检测水平滚动条的存在

php - mock 如何断言类实例

canvas - 访问模板中的元素

oop - 如何在 future builder (Flutter/Dart)中等待变量不等于null?

testing - 如何运行loadrunner测试业务流程

node.js - 单元测试和集成测试的分离

flutter - 重用输入验证器

flutter - 创建多个初始路径