unit-testing - Flutter 中的单元测试通过 BuildContext

标签 unit-testing dart flutter

我在 Dart 类中有一个方法,它接受 BuildContext 参数,如下所示:

class MyClass {

  <return_type> myMethodName(BuildContext context, ...) {
        ...
        doSomething
        return something;
    }
}

我想测试该方法是否按预期工作:

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
...

void main() {
  MyClass sut;

  setUp(() {
    sut = MyClass();
  });

  test('me testing', () {

    var actual = sut.myMethodName(...);        

    expect(actual, something);
  });
}

当然不行,因为方法myMethodName需要一个参数BuildContext类型。这个值在整个应用程序本身都可用,但不确定在我的单元测试中从哪里得到它。

最佳答案

一种方法是使用 testWidgets结合 Builder widget :

testWidgets('me testing', (WidgetTester tester) async {
  await tester.pumpWidget(
    Builder(
      builder: (BuildContext context) {
        var actual = sut.myMethodName(context, ...);
        expect(actual, something);

        // The builder function must return a widget.
        return Placeholder();
      },
    ),
  );
});

关于unit-testing - Flutter 中的单元测试通过 BuildContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56277477/

相关文章:

android - 构建每个像素在 flutter 术语中意味着什么

database - Flutter SQLite 没有这样的列

firebase - 如何使用嵌套 double 据将数据添加到Firebase

单元测试期间的 Xcode CI bot 错误(Unexpected TestSuiteWillFinish)

unit-testing - 如何在单元测试中等待suspendCoroutine?

mobile - 如何获取设备的可用和已用存储空间

flutter - Flutter替换所有HTML代码

flutter - 检查返回错误的 future 的方法

django - 使用 Django 模型进行单元测试并涉及很多关系

c# - 改进模拟代表