1

我正在使用 schedule_test 来测试我的 Polymer Dart 元素。这很好用,直到我尝试使用solo_group()。我的测试依赖于被调用的 setUp() 方法,但是当使用 solo_group() 时,不会调用 setUp() 方法。我的测试,可以理解的失败,抛出关于空值的错误。是否有一个原因?我尝试使用solo_test() 代替,这正如我预期的那样工作,调用setUp() 方法,它应该调用,但不是solo_group。

我感觉到另一个错误报告,但我想在此之前确认这不是预期的行为。

{UPDATE} 如所要求的,这是一个示例,它不是所有的测试代码,但应该足够了。在此示例中,我希望调用 setUp() 方法,但事实并非如此。但是,如果我将 solo_group 转为仅组,则可以。如果将 test() 替换为 solo_test(),并且将 solo_group() 替换为 group(),也会调用 setUp()。

class CheckedFieldComponent extends PageComponent {
  CheckedFieldComponent(el) : super(el);

  bool get value => component.model.value;
  bool get checkIconShown => component.shadowRoot.querySelector('core-icon') != null;
}

void checked_field_test() {
  CheckedFieldComponent component;
  CheckedFieldComponent component2;

  solo_group('[checked-field]', () {
    setUp(() {
      schedule(() => Polymer.onReady);
      schedule(() {
        BoolModel model = new Model.create('bool', '1', 'checked', true, true);
        BoolModel model2 = new Model.create('bool', '2', 'checked', false, true);

        PolymerElement element = createElement('<checked-field></checked-field>');
        PolymerElement element2 = createElement('<checked-field></checked-field>');

        element.model = model;
        element2.model = model2;

        document.body.append(element);
        document.body.append(element2);

        component = new CheckedFieldComponent(element);
        component2 = new CheckedFieldComponent(element2);

        return Future.wait([component.flush(), component2.flush()]);
      });
      currentSchedule.onComplete.schedule(() {
        component.component.remove();
        component2.component.remove();
      });
    });


    test('model.value is true', () {
      schedule(() {
        expect(component.value, isTrue);
      });
    });
  });
}
4

0 回答 0