如何使用testBuilder测试source_gen注释生成器?

时间:2018-08-09 15:45:27

标签: dart

我有一个使用source_gen制作的代码生成器。它工作正常,但是我想添加测试。

我遵循了文档,并使用built_value中的testBuilderbuild_test中汲取了灵感。

问题是,当使用testBuilder时,它无法正确解析导入。因此会引发错误,并且不会触发我的生成器。

  

错误:asset:example / lib / src / truc.dart的第1行,第91列:无法解析foo()→动态\ n'

的注释

这是我当前的测试尝试:

import 'package:source_gen/source_gen.dart';
import 'package:test/test.dart';
import 'package:build_test/build_test.dart';
import 'package:my_gen/my_gen.dart';

const input = {
  "example|lib/src/foo.dart": '''
import 'package:my_gen/my_gen.dart';
import 'package:flutter/material.dart';

@stateless
Widget foo() {
  return Center();
}
'''
};

void main() {
  test('', () async {
    await testBuilder(SharedPartBuilder([MyGenerator], "stateless"), input, outputs: {
      "example|lib/src/foo.stateless.g.part": '''
// **************************************************************************
// StatelessGenerator
// **************************************************************************

class Foo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return foo();
  }
}
'''
    });
  });
}

如何制作testBuilder才能正确解决导入问题;并最终通过发电机进行测试?

1 个答案:

答案 0 :(得分:0)

看看我们在json_serializable-https://github.com/dart-lang/json_serializable/blob/master/json_serializable/test/json_serializable_test.dart

中的工作

我们不使用build_test。相反,我们有一个实用程序库,该实用程序库具有可用于测试的库读取器-https://github.com/dart-lang/json_serializable/blob/master/json_serializable/test/analysis_utils.dart