Тестирование угловой составляющей

Я хочу написать модульный тест (test/src/rating/rating.html/dart) для моего компонента <rating> (lib/rating/rating.dart/html).

void main() {
  useHtmlEnhancedConfiguration();

  ng.Scope _rootScope;
  dom.Element _element;
  ngMock.TestBed _tb;

  setUp(() {
    try {
    ngMock.setUpInjector();

      ngMock.module((ng.Module module) {
        module.install(new RatingModule());
      });

      ngMock.inject((ng.Scope scope, ngMock.TestBed testBed) {
        _rootScope = scope;
        _rootScope['rate'] = 3;
        _tb = testBed;
        _element = _tb.compile('<rating value="rate"></rating>', scope: _rootScope);
        _rootScope.$digest();

      });
      print('setUp done');
    } catch(e) {
      print(e);
    }
  });

Строка _element = _tb.compile('<rating value="rate>... не работает с

[Неожиданный запрос: GET packages/bootstrap_angular/rating/rating.html

Я изменил компоненты templateUrl на template и назначил HTML-шаблон в виде строки и избавился от исключения.

Я что-то не так делаю или это (пока) не поддерживается?


person Günter Zöchbauer    schedule 11.01.2014    source источник


Ответы (1)


Я создал проблему в репозитории Angular.dart GitHub. Получив ответ, я понял, что это работает, но довольно многословно:

void main() {
  useHtmlEnhancedConfiguration();

  ng.Scope _rootScope;
  dom.Element _element;
  ngMock.TestBed _tb; 
  ngMock.MockHttpBackend _backend; // new

  setUp(() {
    Future f;
    try {
    ngMock.setUpInjector();

      ngMock.module((ng.Module module) {
        module.install(new RatingModule());
      });

      ngMock.inject((ng.Scope scope, ngMock.TestBed testBed) {
        _rootScope = scope;
        _rootScope['rate'] = 3;
        _tb = testBed;

        f = dom.HttpRequest.getString('/bootstrap_angular/packages/bootstrap_angular/rating/rating.html') // new
        .then((ratingTemplate) { // new
          _backend = new ngMock.MockHttpBackend(); // new
          print(ratingTemplate); // just debug output
          _backend.expect('GET').respond(ratingTemplate); // new

          _element = _tb.compile('<rating value="rate"></rating>', scope: _rootScope);
          var element =_element.shadowRoot.querySelector('i');
          _rootScope.$digest();
        });
      });
    } catch(e) {
      print(e);
    }
    return f; // new 
    // return a future to make the tests wait until setUp is done
    // found in this question 
    // How to wait for an asynchronous setup in a unit test, in Dart?
    // http://stackoverflow.com/questions/14994518
  });
person Günter Zöchbauer    schedule 11.01.2014