我正在为一个函数编写单元测试。
函数的结构如下:
final isUpdated = await Navigator.of(context).pushNamed([route]);
if (isUpdated) {
[update some global variables]
}
只有当用户使用true
布尔值弹出Navigator从下一页返回时,全局变量才会更改。
我不想检查/验证是否发生了push或pop,我想模拟Navigator.of(context).pushNamed()
调用,在一个测试中返回true
,在另一个测试中返回false
,这样我就可以验证全局变量是否得到更新。
我尝试编写的测试代码看起来像这样:
TEST 1 {
when: Navigator.pushNamed([route])
then answer: true
call function
expect: global variables to be updated
}
TEST 2 {
when: Navigator.pushNamed([route])
then answer: false
call function
expect: global variables to NOT be updated
}
我已经查了很多,但还没有找到解决办法。任何帮助将不胜感激。
1条答案
按热度按时间2hh7jdfx1#
我发现的解决方案是在测试中抽取2个按钮小部件,第一个调用我们正在测试的函数,第二个包含
Navigator.of(context).pop()
调用。第二个应该匹配函数的Navigator.of(context).pushNamed([route])
中使用的任何路由。下面是一个代码片段来澄清: