我正在尝试测试参数是动作的传奇,但是我收到以下错误
NoSuchMethodError: Closure call with mismatched arguments: function 'startUp' Receiver: Closure: ({dynamic action}) => dynamic from Function 'startUp': static. Tried calling: startUp(Bootstrap) Found: startUp({dynamic action}) => dynamic
我如何测试这个传奇?下面的测试示例来自flutter redux saga docs,但它根本不广泛
// Action
class Bootstrap {
final String name;
Bootstrap (this.name);
}
// Saga
startUp({dynamic action}) sync* {
// todo api call
yield Put(Load(action.name));
}
watchSaga() sync* {
yield TakeLatest(startUp, pattern: Bootstrap);
}
// Test
void main() {
group('Middleware tests', () {
test('callApi test', () async {
var sagaMiddleware = createTestMiddleware();
var dispatched = [];
sagaMiddleware.dispatch = (dynamic action) {
dispatched.add(action);
};
sagaMiddleware.getState = () {
return 'test';
};
var task =
sagaMiddleware.run(startUp, args: [Bootstrap]); // Bootstrap is the action class
expect(task.toFuture(), completion(equals(0)));
expect(task.toFuture().then((value) => dispatched),
completion([TypeMatcher<Load>()]));
});
});
}