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 有水豚吗?的主要内容,如果未能解决你的问题,请参考以下文章