Конфигурация HTML на стороне клиента Dart Test

Я понимаю, что package:unittest/unittest.dart устарел, а новым пакетом является package:test/test.dart.

Они эквивалентны библиотеке package:unittest/html_config.dart и функции useHtmlConfiguration() в новой структуре test.dart.

Спасибо.

Примечание: я читаю устаревшую книгу («Дротик в действии»). До сих пор мне удавалось сопоставлять устаревшие части с новыми стандартными частями Dart. За исключением того, что сейчас я читаю раздел Unit-Test.

исходный код

.
├── PackList.dart
├── PackList.html
├── pubspec.lock
├── pubspec.yaml
├── styles.css
└── test
    ├── PackList_test.dart
    └── PackList_test.html

Я пытаюсь проверить, не равно ли значение, возвращаемое конструктором, NULL.

import "package:test/test.dart";
import "../PackList.dart" as packListApp;

main() {
  test("PackItem constructor", () {
    var item = new packListApp.PackItem("Towel");
    expect(item, isNotNull);
  });
}

Исходный код работает.

Это просто упражнение, чтобы понять, как работает тестовая среда.

Я ожидаю, что item будет новым объектом.

Эти свойства инициализируются после var item = new packListApp.PackItem("Towel");

 print(packItem.uiElement); //Towel
 print(packItem.itemText);  //div 

Проблема в том, что я не знаю, как связать часть html моего исходного кода с тестом.

Когда я запускаю этот тест, я получаю эти ошибки.

 pub run test
00:00 +0 -1: loading test/PackList_test.dart [E]                                                   
  Failed to load "test/PackList_test.dart":
  Unable to spawn isolate: The built-in library 'dart:html' is not available on the stand-alone VM.
  PackList.dart: line 1 pos 1: library handler failed
  import "dart:html";
  ^
00:00 +0 -1: Some tests failed.  

Если я добавлю @TestOn("dartium"), я получу это сообщение.

pub run test
No tests ran.

person Ramses Aldama    schedule 29.03.2017    source источник
comment
AFAIK нет эквивалента. Какую настоящую проблему вы пытаетесь решить?   -  person Günter Zöchbauer    schedule 29.03.2017
comment
Я пытаюсь проверить значение, возвращаемое конструктором, не равно NULL.   -  person Ramses Aldama    schedule 29.03.2017
comment
В тестовом пакете действительно отличные документы. Думаю, вам стоит начать с этого. Тестовые файлы должны находиться в каталоге test и называться *_test.dart и *_test.html.   -  person Günter Zöchbauer    schedule 29.03.2017
comment
Спасибо, но я все еще не могу понять, как это сделать.   -  person Ramses Aldama    schedule 29.03.2017
comment
В чем проблема с вашим текущим кодом? Каково фактическое и ожидаемое поведение?   -  person Günter Zöchbauer    schedule 30.03.2017
comment
Обновил и добавил ответ на ваш вопрос в конце описания проблемы. Но я кратко объяснил здесь. Проблема в том, что я не знаю, как связать исходный html-файл с тестом.   -  person Ramses Aldama    schedule 30.03.2017
comment
Извините, но я все еще не понимаю, в чем проблема. Я предполагаю, что вы либо получите сообщение об ошибке для new packListApp.PackItem("Towel"), либо expect(item, isNotNull) завершится успешно.   -  person Günter Zöchbauer    schedule 30.03.2017
comment
Я использую Dartium и пробую @TestOn(dartium) поверх тестового файла, но это не сработало.   -  person Ramses Aldama    schedule 30.03.2017
comment
не работал, довольно расплывчато. Каково именно ожидаемое поведение и каково фактическое поведение?   -  person Günter Zöchbauer    schedule 30.03.2017
comment
хорошо, объект создается после того, как исходный код связывается с браузером. Я тестирую свой исходный код вручную, и он работает.   -  person Ramses Aldama    schedule 30.03.2017
comment
Извините, не могу понять этот комментарий.   -  person Günter Zöchbauer    schedule 30.03.2017
comment
хорошо извините за мои плохие навыки общения. Как сообщить тесту, что объект создается, после его запуска в браузере (Dartium)   -  person Ramses Aldama    schedule 30.03.2017
comment
Я думаю, вам нужно исправить тег сценария Dart в вашем HTML-файле, как описано в документации тестового пакета о тестах браузера. Затем вам нужно запустить pub run test -pdartium, иначе запускаются только тесты VM.   -  person Günter Zöchbauer    schedule 30.03.2017
comment
Спасибо. Я изменил теги, как в документации тестового пакета, и запустил команду pub run test -pdartium. Теперь у меня есть эта ошибка Не удалось загрузить test/PackList_test.dart: Dartium вышел до подключения. Кажется, что он НЕ загружает файл html.   -  person Ramses Aldama    schedule 30.03.2017
comment
Вы исправили тег script, как описано в github.com/dart -lang/test#running-tests-with-custom-html? (<link rel="x-dart-test" ...)   -  person Günter Zöchbauer    schedule 30.03.2017
comment
да, я сделал это.   -  person Ramses Aldama    schedule 30.03.2017


Ответы (1)


pub run test просто запускает тесты ВМ. Если вы хотите запустить тесты браузера, вам нужно явно указать это, например

pub run test -pdartium

my_test.html должен содержать

<link rel="x-dart-test" href="my_test.dart">

вместо обычного тега скрипта Dart

person Günter Zöchbauer    schedule 30.03.2017
comment
Я сделал эти модификации, но они не увенчались успехом. Я двигаюсь вперед и продолжаю изучать дартс. Надеюсь, в будущем я пойму, что я сделал не так. Спасибо за вашу помощь и за то, что направили меня на правильный путь. - person Ramses Aldama; 30.03.2017
comment
Понимаю. Я истолковал ваш последний комментарий так, как будто он работает сейчас. Я не знаю, что еще предложить. - person Günter Zöchbauer; 30.03.2017