简体   繁体   English

Flutter 与提供商进行单元测试

[英]Flutter unit testing with provider

I am not able to use the provider in unit testing I am using the following code.我无法在我使用以下代码的单元测试中使用提供程序。 I am getting this error我收到这个错误

00:02 +2 -1: test student controller with add and remove student test controller for add new set [E]                                            
  Null check operator used on a null value
  package:provider/src/provider.dart 274:20  Provider.of
  test/student_controller_test.dart 53:22    main.<fn>.<fn>
  test/student_controller_test.dart 36:53    main.<fn>.<fn>

class MockBuildContext extends Mock implements BuildContext {} class MockBuildContext extends Mock implements BuildContext {}

void main() {
  late MockBuildContext _mockContext;

  setUpAll(() {
    _mockContext = MockBuildContext();
  });


test('test student controller for add new student', () async {
      List<Students> sts = [
        Students(
            name: 'Barbels',
            age: 21,
            weight: 70,
          ),
         Students(
            name: 'Hazel',
            age: 31,
            weight: 60,
          ),
      ];
      var id = '1';
      print(_mockContext);
      MyController.saveStuden(_mockContext, id, sets);
      print(Provider.of<StudentProvider>(_mockContext, listen: false)
          .items
          .length);
});

You need to register the controller to be run before tests.您需要注册 controller 才能在测试前运行。

void main() {

  late MockBuildContext _mockContext;
  late MyController _controller;

  setUpAll(() {
    _controller = MyController();
    _mockContext = MockBuildContext();
  });


test('test student controller for add new student', () async {
      List<Students> sts = [
        Students(
            name: 'Barbels',
            age: 21,
            weight: 70,
          ),
         Students(
            name: 'Hazel',
            age: 31,
            weight: 60,
          ),
      ];
      var id = '1';
      print(_mockContext);

      _controller.saveStuden(_mockContext, id, sets);

      print(Provider.of<StudentProvider>(_mockContext, listen: false)
          .items
          .length);
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM