我正在使用 freezed 從 json 制作物件:
@freezed
class UserMessagesResponseModel with _$UserMessagesResponseModel {
const factory UserMessagesResponseModel({
final Data? data,
}) = _UserMessagesResponseModel;
factory UserMessagesResponseModel.fromJson(final Map<String, dynamic> json) =>
_$UserMessagesResponseModelFromJson(json);
}
@freezed
class Data with _$Data {
const factory Data({
final Messages? messages,
}) = _Data;
factory Data.fromJson(final Map<String, dynamic> json) =>
_$DataFromJson(json);
}...
現在我正在嘗試對創建的物件進行測驗和檢查型別:
test('should return a valid model', () async {
final jsonMap =
json.decode(fixture('message.json')) as Map<String, dynamic>;
final result = UserMessagesResponseModel.fromJson(
jsonMap,
);
expect(result, equals(UserMessagesResponseModel));
});
為什么我得到錯誤:
Expected: Type:<UserMessagesResponseModel>
Actual: _$_UserMessagesResponseModel:<UserMessagesResponseModel...
冷凍 不做相同的型別?如何檢查型別?
我也用過:
expect(result, isA<UserMessagesResponseModel>);
但我得到了這個:
Expected: <Closure: () => TypeMatcher<UserMessagesResponseModel> from Function 'isA': static.>
Actual: _$_UserMessagesResponseModel:<UserMessagesResponseModel
uj5u.com熱心網友回復:
第一個例子
expect(result, equals(UserMessagesResponseModel));
不起作用,因為 result 是一個實體并且UserMessagesResponseModel是一種型別,您應該使用isA.
但是在我使用的第二個示例中isA,它仍然無法正常作業!
你錯過了()after isA,我相信這就是它不起作用的原因。
由此:
expect(result, isA<UserMessagesResponseModel>);
對此:
expect(result, isA<UserMessagesResponseModel>());
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/406793.html
標籤:
