Я пишу полимерное приложение, и у меня есть сервис, который используется полимерными элементами. Я хочу протестировать эту услугу, но не могу понять, как.

Вот что я имею в сервисе:

<script src="../../webcomponentsjs/webcomponents-lite.js"></script>
<script src="../../web-component-tester/browser.js"></script>

<link rel="import" href="../test-service.html">

<script>
define('test-service', () => {
  class TestService {
    constructor(componentA, componentB) {
      this.componentA = componentA;
      this.componentB = componentB;
    }
  }
  return TestService;
});
</script>

Как я могу проверить это? Если я попытаюсь просто включить файл .html, у меня не будет доступа к TestService.

3
horstwilhelm 28 Май 2017 в 19:27

2 ответа

Лучший ответ

Наконец-то разобрался. Все это было связано с Polymer IMD и внедрением зависимостей. Определение набора тестов выглядит иначе:

define('test-service-test', ['test-service'], (TestService) => {
    let testServiceInstance = new TestService(1, 2);

    test('basic test', function(){
        assert.equal(testServiceInstance.componentA, 1);
        assert.equal(testServiceInstance.componentB, 2);
    })
});
1
horstwilhelm 14 Авг 2017 в 09:55

Это полный HTML-код примера теста. В основном добавьте свой тег test-service через test-fixture, а затем посмотрите, правильно ли он работает.

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes">

    <title>test-service test</title>

    <script src="../../webcomponentsjs/webcomponents-lite.js"></script>
    <script src="../../web-component-tester/browser.js"></script>

    <link rel="import" href="../test-service.html">
</head>
<body>

<test-fixture id="BasicTestFixture">
    <template>
        <test-service></test-service>
    </template>
</test-fixture>

<script>
    suite('test-service', function() {

        test('instantiating the element with default properties works', function() {
            let testService = fixture('BasicTestFixture');
            assert.equal(testService.apiUrl, 'http://myapi.domain.com');
            // possible something like
            // let addResult = testService.addElement(...);
            // assert.equals(addResult, '{"result": "success"}');
        });

    });
</script>

</body>
</html>
0
daKmoR 3 Июн 2017 в 18:48