我在 Dart 类中有一个方法,它接受 BuildContext
参数,如下所示:
class MyClass {
<return_type> myMethodName(BuildContext context, ...) {
...
doSomething
return something;
}
}
我想测试该方法是否按预期工作:
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
...
void main() {
MyClass sut;
setUp(() {
sut = MyClass();
});
test('me testing', () {
var actual = sut.myMethodName(...);
expect(actual, something);
});
}
当然不行,因为方法myMethodName
需要一个参数BuildContext
类型。这个值在整个应用程序本身都可用,但不确定在我的单元测试中从哪里得到它。
最佳答案
一种方法是使用 testWidgets
结合 Builder
widget :
testWidgets('me testing', (WidgetTester tester) async {
await tester.pumpWidget(
Builder(
builder: (BuildContext context) {
var actual = sut.myMethodName(context, ...);
expect(actual, something);
// The builder function must return a widget.
return Placeholder();
},
),
);
});
关于unit-testing - Flutter 中的单元测试通过 BuildContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56277477/