Node.js 有水豚吗?

Posted

技术标签:

【中文标题】Node.js 有水豚吗?【英文标题】:Is there a capybara for Node.js? 【发布时间】:2011-11-27 08:34:23 【问题描述】:

有谁知道Node.js有没有类似capybara的东西?

【问题讨论】:

投票结束作为工具记录 【参考方案1】:

Zombie怎么样?

僵尸.js

使用 Node.js 进行快速、无头的全栈测试

如果你要编写一个速度极快的无头浏览器,你怎么能不把它叫做 Zombie Zombie。

Zombie.js 是一个轻量级框架,用于在模拟环境中测试客户端 javascript 代码。无需浏览器。

【讨论】:

这样的话,你应该看看phantomjs...我问这个问题的原因是capybara是一个通用框架,用于其他web验收测试系统,如Selenium、htmlunit等。跨度> 我想目前,节点没有像水豚这样的东西,所以我奖励你积分 - 感谢你的输入!【参考方案2】:

我是一名由 Rails 转为节点的开发人员,我一直在寻找 JS 世界中获胜的 RSpec/Capybara 组合的类比。这是我找到的最喜欢的。

Mocha - 用于运行异步测试 Chai - 用于断言 Request - 用于处理 HTTP 请求/响应 Cheerio - 用于从响应中选择 HTML 元素

这里是more involved post,介绍如何设置此堆栈,包括连续测试运行。

测试愉快!

【讨论】:

我现在正在测试一个类似的堆栈。运行起来非常简单,但我找不到一种很好的方法来针对渲染的 javascript 执行 Cheerio 抓取,就像在单页应用程序中一样。祝你好运。【参考方案3】:

Cucumber-JS 是最接近 Javascript 的: https://github.com/cucumber/cucumber-js

您可以使用该库来驱动 JS、headless 和 Selenium,但是它缺少每个不同“世界”之间的“capybara”共享 API。 http://skillsmatter.com/podcast/agile-testing/cucumber-js-cuke-up-your-javascript 有很好的演讲,https://github.com/jbpros/cukecipes 支持 github 代码

我希望当 phantomjs webdriver 有线协议完成时 (https://github.com/detro/ghostdriver) 并且如果 Soda/Selenium (https://github.com/LearnBoost/soda) 能够驱动它,那么无头测试将能够通过 Selenium 自动化,从而绕过需要水豚。

【讨论】:

【参考方案4】:

见jelly.io:

Jellyfish 是一个 Node 项目,旨在让您轻松启动不同的 JavaScript 环境并运行您的代码。

【讨论】:

【参考方案5】:

喂!

我创建了一个库来帮助使用 cucumber-js。它为您提供可调用的步骤和解析的参数。这适用于黄瓜,不能代替它。

快速功能:

同步步骤定义,不再有回调; 从步骤定义中调用其他步骤; 解析数组、对象和小数等值;

https://github.com/hackhat/cucumberry

希望你觉得它有用(:

【讨论】:

【参考方案6】:

我们在 JS 中创建了一个完整的验收测试解决方案

http://xolv.io/products/chimp

它使用 CucumberJS(即将推出 Mocha/Jasmine)来推动您的验收测试

下载并启动 Phantom / Selenium 将预配置的 Webdriver.IO 实例注入到测试上下文中 包括request npm 库(用于 REST) 您选择的断言库(Chai / Jasmine-expect) 使用纤程进行同步测试(无回调地狱/承诺混淆) 适用于 SauceLabs / BrowserStacks 等 支持外部测试,使用监视模式持续运行您使用@focus 标记的场景 开箱即用支持 CI,并在 Circle/Codeship/Travis 上进行了测试(使用无头 Chrome/Firefox)

它还不能让你喝咖啡

【讨论】:

【参考方案7】:

在验收测试方面,我大量使用 Capybara for Rails。我对这里列出的 NodeJS 替代方案不满意。您将需要一个流行的 Web 自动化实用程序,以及针对特定功能的场景进行断言的能力。

当您想到 Node、Phantom 和 Casper 中的 Web 自动化时,它已经死了。那么,目前正在崛起的是什么? 木偶师。几年前我开始使用 Puppeteer,当时它还处于测试阶段,关于它的文章和 SO 帖子很少。但现在 Puppeteer 正在成为 Node.js 中 Web 自动化的领导者。但是,您不能在 Puppeteer 中断言您对测试框架的期望。

但这并不能阻止我们将测试工具集成到 Puppeteer 网络自动化中。我找到了一些使用 jest 作为测试工具的解决方案。

const puppeteer = require('puppeteer');
describe('Open Website', () => 
  var browser, page;
  var url = 'https://website.io'
  beforeEach (async () => 
    browser = await puppeteer.launch( headless: false );
    page = await browser.newPage();
  )

afterEach (() => 
    browser.close()
  )

test('Title == Website Tools', async () => 
    await page.goto(url);
    const title = await page.title();
    expect(title).toBe("Website Tools");
  );

【讨论】:

【参考方案8】:

是的,请在此处查看 expresso 和更多信息 - Unit testing framework for node.js that specifically supports testing async code?

【讨论】:

不,我说的是通用网络验收测试框架。

以上是关于Node.js 有水豚吗?的主要内容,如果未能解决你的问题,请参考以下文章

node.js 中的闭包有啥不同吗?

node.js 有虚拟环境吗?

对 Node.js 的 xml 到 json 有啥建议吗?

为 node.js 重新加载。有可能吗? [复制]

前端有必要去学 Node.js 吗?

nginx、node.js 和 socket.io - 有工作婚姻吗?