testing - 测试 Flutter 行为主题
问题描述
这是我正在尝试测试的服务。
class AccountService {
AuthLibrary _library;
BehaviorSubject<User> _user;
Stream<User> get user => _user.stream.asBroadcastStream();
AccountService(this._library) : _user = BehaviorSubject() {
checkUserLogin();
}
Future<void> checkUserLogin() async {
final token = await _library.getToken();
final tokenLength = token?.length ?? 0;
return _user.add(tokenLength > 0 ? User(token: token) : null);
}
}
这是我的测试:
class MockAuth extends Mock implements AuthLibrary {}
main() {
AuthLibrary _auth0;
setUpAll(() {
_auth0 = MockAuth();
});
test('set user if token is not empty', () async {
final expected = User(token: "21398712938721");
when(_auth0.getToken()).thenAnswer((_) async => expected.toString());
final service = AccountService(_auth0);
verify(_auth0.getToken()).called(1);
expect(service.user, emits(expected));
});
}
我在互联网上找不到如何通过此测试。我在那里发现的每个示例都使用相同的模式,但由于某种原因,它在这里失败了。因此,当我运行测试时,出现以下错误:
Expected: should emit an event that <Instance of 'User'>
Actual: <Instance of 'Observable<User>'>
Which: emitted • Instance of 'User'
解决方案
推荐阅读
- docker - 无法启动容器:OCI 运行时创建失败:container_linux.go:349
- sql-server - SQL Server - 使用 html 格式将 nvarchar 变量添加到电子邮件
- java - 你如何为android中的特定单词设置粗体样式?
- gcc - Gcc Makefile .elf 文件失败
- java - 如何在android studio的textview中显示recyclerview的总数
- php - 循环遍历多维 PHP 数组的次数太多了
- asp.net - 从外部 URL 重定向回 ASP.NET MVC 中的操作方法后无法保留 cookie
- python - 如何在 Matplotlib 中的 Y 轴和开始和结束垂直条之间留出一些空间
- c++ - 在opencv中获取C ++中灰度图像的直方图
- sql - MS Sql 按子字符串拆分特定列