如何使用服务范围编写测试

How to write tests using the service scope

我的应用程序正在访问服务范围 (package:gcloud/service_scope.dart) 中的对象,例如 storageService 和我在 ss.register().

范围内放置的其他服务

现在我想对访问此范围的函数进行单元测试,并使用我想放入服务范围的模拟对象。

唯一的方法是为每次测试注册它们,如下所示:

var withServiceScope = (callback()) => ss.fork(() {
  // Register all services here
  return callback();
});
test('the description', () => withServiceScope(() async {
  // Call my function that can now access the service scope
}));

或者是否有方法允许我在 setUp() 函数中执行此操作,这样我就不需要为每个测试添加这一行?

这可能会使编写测试更简单(代码未测试)

import 'package:test/test.dart' as t;
import 'package:test/test.dart' show group;

var withServiceScope = (callback()) => ss.fork(() {
  // Register all services here
  return callback();
});

test(String description, Function testFunction) {
  t.test(description, () => withServiceScope(() async {
    testFunction();
  }));
}

main() {    
  test('the description', () async {
    // Call my function that can now access the service scope
  }));
}