Credits to bloc_test for the orignal model
Super Test
Designed to simplify testing of SuperControllers, RxNotifiers and RxTs. Developed for the flutter_super package.
Create a Mock
class MockCounterController extends CounterController {}
class MockCounterNotifier extends CounterNotifier {}
Controller Tests
Test case for a SuperController
object.
The testController
function is used to define a test case for a SuperController
object. It takes various parameters to configure the test case, including the description
of the test, the build
function to create the SuperController
object, functions for handling enable, alive, and disable states, setup and teardown functions, initial state seed
, actions to perform on the controller, a wait duration, expected outcomes, verification functions, error handling, and optional tags
for categorization.
Example usage:
testController<MyController, int>(
'MyController test',
build: MyController.new,
state: (controller) => controller.myState,
onEnable: (controller) {
// Handle the enable state.
},
onAlive: (controller) {
// Handle the alive state.
},
onDisable: (controller) {
// Handle the disable state.
},
setUp: () {
// Perform setup operations.
},
seed: () => 10,
act: (controller) async {
// Perform actions on the controller.
},
wait: const Duration(seconds: 1),
expect: () => [10],
verify: (controller) async {
// Perform additional verifications.
},
tearDown: () {
// Perform teardown operations.
},
);
In the above example, the testController function is used to define a test case for a custom SuperController
object that holds an integer value. The test case includes a description, a build
function to create the SuperController
object, functions to handle the enable, alive, and disable states, setup and teardown functions, an initial state seed
, actions to perform on the controller, a wait duration, expected outcomes, verification functions, and teardown operations. The test case can be executed by running the test suite.
The testController function provides a convenient way to define and organize test cases for SuperController
objects in unit tests.
RxT Tests
Defines a test case for a RxT
object.
The testRxT function defines a test case for a specific RxT
object, which represents a reactive state container. It allows you to set up the initial state, perform actions on the state, and verify the expected behavior and outcomes.
The testRxT function takes various parameters to configure the test case, such as the test description, setup and teardown functions, actions to perform on the state, expected outcomes, and error handling. It uses the test
library from the test
package to define and run the actual test.
Example usage:
testRxT<int>(
'RxT test case',
build: () => RxT<int>(0),
act: (rx) => rx.value = 10,
expect: () => [10],
);
In the above example, the testRxT function is used to define a test case for an RxT
object that holds an integer value. The test case sets up the initial state, performs an action by assigning the value 10 to the state, and expects the state to have the value 10. The test case is then run using the test
library.
The testRxT function simplifies the testing of reactive state containers, allowing you to define clear and concise test cases that cover different scenarios and behaviors of the state.
RxNotifier Tests
Defines a test case for a RxNotifier
object.
The testRxNotifier function defines a test case for a specific RxNotifier
object, which represents a reactive state container. It allows you to set up the initial state, perform actions on the state, and verify the expected behavior and outcomes.
The testRxNotifier function takes various parameters to configure the test case, such as the test description, setup and teardown functions, actions to perform on the state, expected outcomes, and error handling. It uses the test
library from the test
package to define and run the actual test.
Example usage:
testRxNotifier<int>(
'RxNotifier test case',
build: () => RxNotifier<int>(0),
act: (notifier) => notifier.value = 10,
expect: () => [10],
);
In the above example, the testRxNotifier function is used to define a test case for an RxNotifier
object that holds an integer value. The test case sets up the initial state, performs an action by assigning the value 10 to the state, and expects the state to have the value 10. The test case is then run using the test
library.
The testRxNotifier function simplifies the testing of reactive state containers, allowing you to define clear and concise test cases that cover different scenarios and behaviors of the state.
Additional Information
For more information on all the APIs and more, check out the API reference.
Requirements
- Dart 3: >= 3.0.0
Maintainers
Credits
All credits to God Almighty who guided me through the project.
Libraries
- super_test
- Developed to simplify testing of SuperControllers, RxNotifiers and RxTs.