【问题标题】:How to test source_gen annotation builders using testBuilder?如何使用 testBuilder 测试 source_gen 注释构建器?
【发布时间】:2018-08-09 15:45:26
【问题描述】:

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

我遵循文档并从built_value 获得灵感,使用来自build_testtestBuilder

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

错误:资产的第 1 行,第 91 列:example/lib/src/truc.dart:无法解析 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 正确解析导入;并最终由发电机测试?

【问题讨论】:

    标签: dart


    【解决方案1】:

    看看我们在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

    【讨论】:

    • 其实我是基于built_value。不知道为什么我说json_serializable
    • 但这很有趣。如果我没有让build_test 工作,我会尝试,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多