2

如何使用 web-component-tester 和聚合物设置以下元素/测试,以便 (1) XHR 请求完成,(2)然后断言运行,导致 (3) 测试通过?

/my-element.html

<dom-module id="my-element">
  <template>
  <iron-request id="req"><iron-request>
  </template>

  <script>
    (function() {
      'use strict';

      Polymer({
        is: 'my-element',
        properties: {
          newVal: Object
        },
        fetchedStuff: function(ironRequest) {
          this.set('newVal', ironRequest.response);
          console.log('This gets logged after tests run.'); // <--- this is firing too late!
        },
        ready: function() {
          this.$.req.resolveCompletes = this.fetchedStuff;
          this.$.req.send({url: '/my.json'});
        }
      });
    })();
  </script>
</dom-module>

/my-element-test.html

<test-fixture id="basic">
  <template>
     <my-element></my-element>
  </template>
</test-fixture>

<script>
  suite('my-element tests', function() {
    test('Item lengths should be equalled', function(done) {
      element = fixture('basic');
      flush(function() {
        assert.equal(element.newVal, {"name": "Polymer"});
        done();
      });
    })
  });
</script>

背景

我们想在不使用 web-component-tester 中提供的 Sinon 服务器的情况下测试 ajax 调用(也就是说,我们想进行真正的xhr 调用。我们这样做是因为 xhr 请求应该从文件中返回内容是从不同的系统自动生成的。

FWIW,我尝试在各个地方放置回调和承诺,包括使用 Iron-ajax 元素,但我似乎找不到解决这个问题的理想方法。到目前为止,我发现的唯一解决方案是创建一个名为“executeTests”的事件,这看起来很奇怪。

4

0 回答 0