我想撰寫一個顫振單元測驗,其中未來將結果映射到不同的東西并再次將新結果作為未來回傳,例如:
Future<String> invoke() => class.doSomething().then((value) => map(value));
示例方法“invoke()”應回傳映射值。
回傳映射值的肯定測驗正在作業。(下面示例中的 test1)
回傳 Future.error 的否定測驗失敗并出現此錯誤(下面示例中的測驗 2):
無效引數(onError):Future.catchError 的錯誤處理程式必須回傳未來型別的值
有誰知道如何改進測驗,所以我可以測驗 test2 中描述的錯誤情況:
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
import 'test_test.mocks.dart';
class A {
final B b;
A(this.b);
Future<String> doSomething() => b.doSomething().then((value) => "mappedResult");
}
class B {
Future<int> doSomething() => Future.delayed(const Duration(seconds: 1));
}
@GenerateMocks([B])
void main() {
final bmock = MockB();
test('test1', () async {
when(bmock.doSomething()).thenAnswer((_) => Future.value(1));
var result = await A(bmock).doSomething();
expect(result, "mappedResult");
});
test('test2', () async {
when(bmock.doSomething()).thenAnswer((_) => Future.error("error"));
A(bmock).doSomething().catchError((error) {
expect(error, "error");
});
});
}
版本:
Flutter 2.10.1
mockito: ^5.0.17
test: ^1.17.12
uj5u.com熱心網友回復:
Future<T>.catchError期望回傳一個回呼Future<T>。但是,
Future.catchError使用起來很混亂,最好完全避免它:
try {
await A(bmock).doSomething();
fail('doSomething did not throw');
} catch (e) {
expect(e, 'error');
}
或者您可以使用expectLater:
await expectLater(A(bmock).doSomething(), throwsA('error'));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/428543.html
上一篇:R語言使用complete.cases函式篩選出dataframe中不包含缺失值的所有資料行(select rows not have missing values)
