模拟DateTime参数输入



是否有人遇到将any模拟方法提供给DateTime模拟方法参数的问题?基本上,我在模拟类Future<int> testMethod(DateTime datetime)上实现了这个方法。

因此,当我试图通过when(mockClass.testMethod(any)).thenAnswer((_) async => 1)在测试场景上stub响应时,这总是显示在IntelliJ行编辑器-error: The argument type 'Null' can't be assigned to the parameter type 'DateTime'. (argument_type_not_assignable)上。


import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
abstract class TestClass {
Future<int> testMethod(DateTime dateTime);
}
class MockTestClass extends Mock implements TestClass {}
class InvokeClass {
final TestClass testClass;
InvokeClass(this.testClass);

}
// @GenerateMocks([InvokeClass, TestClass])
void main() {
TestClass testClass = MockTestClass();
InvokeClass invokeClass;
setUp(() {
testClass = MockTestClass();
invokeClass = InvokeClass(testClass);
});
test('', () async {
when(testClass.testMethod(any)).thenAnswer((_) => 1);
});
}

您是否尝试将参数设置为空以使方法变为

testMethod(DateTime? datetime)

最简单的方法是使用mockito5.0.0中的代码生成器:https://pub.dev/packages/mockito#lets-create-mocks

基本上你会用:

abstract class MyClass {
Future<int> testMethod(DateTime dateTime);
}
@GenerateMocks([MyClass])
void main() {
final mock = MockMyClass();
when(mock.testMethod(any)).....
}

生成器将创建一个方法,该方法接受一个可为空的DateTime,因此any将工作。查看mockito文档了解更多详细信息。

给出你的例子,它应该看起来像:

import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'testclass.mocks.dart'; // this will be generated by `build_runner build`
abstract class TestClass {
Future<int> testMethod(DateTime dateTime);
}
class InvokeClass {
final TestClass testClass;
InvokeClass(this.testClass);

}
@GenerateMocks([TestClass])
void main() {
MockTestClass testClass = MockTestClass();
InvokeClass invokeClass;
setUp(() {
testClass = MockTestClass();
invokeClass = InvokeClass(testClass);
});
test('', () async {
when(testClass.testMethod(any)).thenAnswer((_) => 1);
});
}

在这些更改之后运行flutter run build_runner builddart run build_runner build

最新更新