TinyTest似乎只与单元测试有关。但是,Meteor程序包可能具有UI元素,因此可以提取锻炼小部件的预制HTML文件将很有帮助。例如,我们可能想将<table>转换为带有DataTables.net的网格,然后测试实例化是否正确。

TinyTest中如何使用外部HTML文件?

package.js:

Package.onTest(function (api) {
  api.use(packageName, where);
  api.use(['tinytest', 'http'], where);

  // TODO we should just bring in src/test.html - but how to do that with TinyTest?
  api.addFiles('src/test.html', where);  // this won't magically display the HTML anywhere
  api.addFiles('meteor/test.js', where);
});


test.js:

Tinytest.addAsync('Visual check', function (test, done) {
  var iconsDropZone = document.createElement('div');
  document.body.appendChild(iconsDropZone);


  // TODO ideally we'd get src/test.html straight from this repo, but no idea how to do this from TinyTest
  HTTP.get('https://rawgit.com/FortAwesome/Font-Awesome/master/src/test.html', function callback(error, result) {
    if (error) {
      test.fail('Error getting the icons. Do we have an Internet connection to rawgit.com?');
    } else {
      iconsDropZone.innerHTML = result.content;
      test.ok({message: 'Test passed if the icons look OK.'});
    }

    done();
  });

});

最佳答案

我个人认为TinyTest不是完成这项工作的正确工具!您可能会发现如何包括Asset包或编写自己的文件加载器,但很快就会遇到需要在测试中查询DOM的问题。

我可以想到以下一些选项:

选项1:
您可以使用xolvio:webdriver访问完全渲染的页面。如果将此包包含在onTest块中,则您应该可以在TinyTest测试中访问wdio。我说应该,因为我根本不使用TinyTest,但我将webdriver软件包设计为可在任何框架中使用。按照包装自述文件中的说明进行操作,然后执行以下操作:

browser.
  init().
  url('https://rawgit.com/FortAwesome/Font-Awesome/master/src/test.html').
  getSource(function(err, source) {
    // you have a fully rendered source here and can compare to what you like
  }).
  end();


这是一个重量级的选择,但可能适合您。

选项2:
如果您愿意离开TinyTest,另一种选择是使用Jasmine。它支持client unit测试,因此您可以加载进行视觉效果的单元,并通过单元测试将其隔离。

选项3:
您可以围绕您的软件包创建一个测试应用。因此,您将拥有:

/package
/package/src
/package/example
/package/example/main.html
/package/example/tests
/package/example/tests/driver.js


现在示例目录是Meteor应用程序。在main.html中,您将使用软件包,并在tests目录下,可以将所选框架(jasmine / mocha / cucumber)与webdriver结合使用。我喜欢这种开发包的模式,因为您可以测试打算供应用程序使用的包。

关于javascript - 将HTML文件拉入TinyTest,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27180892/

10-13 07:48