我近 20 天正在学习 Flutter Clean Architecture TDD 课程。我正在编写 Stream (mapEventToState) 的单元测试,这是我的测试代码:
\ntest(\n 'should emit [Error] when the input is invalid',\n () async {\n // arrange\n when(mockInputConverter!.stringToUnsignedInteger(SIGNED_STRINGS))\n .thenReturn(Left(InvalidInputFailure()));\n // assert later\n final expected = [\n // The initial state is always emitted first\n NumberTriviaEmpty(),\n NumberTriviaError(message: INVALID_INPUT_FAILURE_MESSAGE),\n ];\n expectLater(bloc!.state, emitsInOrder(expected));\n // act\n bloc!.add(GetTriviaForConcreteNumber(tNumberString));\n },\n);\nRun Code Online (Sandbox Code Playgroud)\n忘记所有关于(何时)的事情,因为我已经模拟了所有类并简单地返回了一个 Left of Either ,这显然是一个失败,这很好。因此,预期数据的问题出现了,我只是创建了预期列表,并将其按顺序“emitsInOrder”传递到“expectLater”方法中。
\n我的 Stream 实现代码在这里:
\n@override\nStream<NumberTriviaState> mapEventToState(NumberTriviaEvent event,) async* {\nif (event is GetTriviaForConcreteNumber) {\n final inputEither =\n inputConverter.stringToUnsignedInteger(event.numberString);\n\n yield* inputEither!.fold(\n (failure) …Run Code Online (Sandbox Code Playgroud)