Skip to content

A package that facilitates the creation of tests for Flutter applications built with GetX. Bridges the gap between GetX's context-less framework and flutter state.

License

Notifications You must be signed in to change notification settings

cyenite/getx_test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Getx Test

getx_test is a package that provides testing utilities for GetX, a powerful state management library for Flutter.
Based on get_test library.

Installation

Add the following dependency to your pubspec.yaml file:

dependencies:  
    getx_test: ^1.0.3

Usage


Import the required packages and create a test case using the getTest method. Inside the widgetTest callback, use the expect method to test your GetX app's behavior.

    import 'package:flutter/material.dart';  
    import 'package:flutter_test/flutter_test.dart';  
    import 'package:get/get.dart';  
    import 'package:getx_test/getx_test.dart';  
      
    void main() {  
	    getTest(  
	    "test description",  
	    widgetTest: (tester) async {  
		    expect('/', Get.currentRoute);  
		    
		    Get.to(Container()); 
		    expect('/Container', Get.currentRoute);  
		    
		    Get.to(Scaffold()); 
		    expect('/Scaffold', Get.currentRoute);  
		    
		    Get.back();  
		    expect('/Container', Get.currentRoute); 
		});  
    }

You can also use testGetX, testGetBuilder, and testObx to test specific GetX widgets:

    testGetX(  
      'GetX test',  
      widget: GetX<Controller>(  
        init: Controller(),  
        builder: (controller) {  
          return Text("Clicks:${controller.count}");  
        },  
      ),  
      test: (e) {  
        expect(find.text("Clicks:0"), findsOneWidget);  
        expect(e.count.value, 0);  
      },  
    );

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    testGetBuilder(  
      'GetBuilder test',  
      widget: GetBuilder<Controller>(  
        init: Controller(),  
        builder: (controller) {  
          return Text("Clicks:${controller.count}");  
        },  
      ),  
      test: (e) {  
        expect(find.text("Clicks:0"), findsOneWidget);  
        expect(e.count.value, 0);  
      },  
    );

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    testObx(  
      'Obx test',  
      widget: (controller) => Obx(  
        () => Text("Clicks:${controller.count}"),  
      ),  
      controller: Controller(),  
      test: (e) {  
        expect(find.text("Clicks:0"), findsOneWidget);  
        expect(e.count.value, 0);  
      },  
    ); 

Finally, you can test your GetxController instances with testController:

    testController<Controller>(  
      'Controller test',  
      (controller) {
		  //Write your controller arrangements, actions and assertions here...
	  },  
      controller: Controller(),  
      onInit: (c) {  
        c.increment();  
        print('onInit');  
      },  
      onReady: (c) {  
        print('onReady');  
        c.increment();  
      },  
      onClose: (c) {  
        print('onClose');  
      },  
    );

Examples

For more examples of how to use get_test, check out the official example repository or the official documentation.

Conclusion

getx_test is a great tool for testing GetX applications in Flutter. With this package, you can easily test your widgets, controllers, and routes to make sure your app works as expected.

About

A package that facilitates the creation of tests for Flutter applications built with GetX. Bridges the gap between GetX's context-less framework and flutter state.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages