如何使用 mockito 测试空值?
How to test nulls using mockito?
我正在使用mockito 4.1.3 ,这里我有一些测试class:
import 'package:flutter_test/flutter_test.dart';
import 'package:ghinbli_app/models/film_model.dart';
import 'package:ghinbli_app/network/ghibli_films.dart';
import 'package:mockito/mockito.dart';
class MockClient extends Mock implements GhibliFilms {
@override
Future<List<FilmModel>> getFilms() async{
return null;
}
}
void main() {
final GhibliFilms ghibliMock = MockClient();
test('If API call was unsuccessful and data received is null', () {
expect(ghibliMock.getFilms(), null);
});
}
在 MockClient
class 中,我覆盖了一个名为 getFilms()
的方法和 returning null 来模拟调用某些 API return作为数据为空。
一个问题
当我尝试检查 getFilms()
是否实际上 return 是空值时,我的测试将失败并出现此错误(可能是因为 getFilms()
的 return 类型) :
Expected: <null>
Actual: <Instance of 'Future<List<FilmModel>>'>
如何检查和测试来自 getFilms()
的数据实际上是空的,我做错了什么?
我已经测试了您的代码并遇到了与您相同的错误。进行这些更改后一切正常,请自行尝试。
class MockClient extends Mock implements GhibliFilms {
@override
Future<List<FilmModel>> getFilms() async {
return Future.value(null); // this is not that important
}
}
void main() {
final GhibliFilms ghibliMock = MockClient();
// async/await here was important
test('If API call was unsuccessful and data received is null', () async {
expect(await ghibliMock.getFilms(), null);
});
}
我正在使用mockito 4.1.3 ,这里我有一些测试class:
import 'package:flutter_test/flutter_test.dart';
import 'package:ghinbli_app/models/film_model.dart';
import 'package:ghinbli_app/network/ghibli_films.dart';
import 'package:mockito/mockito.dart';
class MockClient extends Mock implements GhibliFilms {
@override
Future<List<FilmModel>> getFilms() async{
return null;
}
}
void main() {
final GhibliFilms ghibliMock = MockClient();
test('If API call was unsuccessful and data received is null', () {
expect(ghibliMock.getFilms(), null);
});
}
在 MockClient
class 中,我覆盖了一个名为 getFilms()
的方法和 returning null 来模拟调用某些 API return作为数据为空。
一个问题
当我尝试检查 getFilms()
是否实际上 return 是空值时,我的测试将失败并出现此错误(可能是因为 getFilms()
的 return 类型) :
Expected: <null>
Actual: <Instance of 'Future<List<FilmModel>>'>
如何检查和测试来自 getFilms()
的数据实际上是空的,我做错了什么?
我已经测试了您的代码并遇到了与您相同的错误。进行这些更改后一切正常,请自行尝试。
class MockClient extends Mock implements GhibliFilms {
@override
Future<List<FilmModel>> getFilms() async {
return Future.value(null); // this is not that important
}
}
void main() {
final GhibliFilms ghibliMock = MockClient();
// async/await here was important
test('If API call was unsuccessful and data received is null', () async {
expect(await ghibliMock.getFilms(), null);
});
}