English 中文(简体)
Ruby 宝石: api 包装纸的写作测试
原标题:Ruby gem: writing tests for api wrapper

我为一个API包装纸写了一份宝石,该包装纸将被用于多种用途。我对这个API没有控制权,但我确实有一个 dev env, 我可以在不影响生产的情况下搞砸它。

你会怎么写这个宝石的测试?

示例: 考虑方法添加_ 客户, 需要多个参数( 名称、 电子邮件等), 电子邮件是独一无二的 。

如果i 写一个测试, 插入有电子邮件< a href=' /cdn- cgi/l/ email- protection" 类的客户 ="_cf_email_" 数据 - cfemail="b6d7d6d6d6d6dd6dd7ddd7ddd9dd498d5d9db> > [email protected] 。 第二次, 尽管我的宝石正常工作, 此测试将失败 。

最佳回答

通常情况下, 您想要为您正在运行的每次测试清理您的 DB 。 我们正在使用 DatabaseCleaner 宝石在红宝石中做这个 。 基本上在我们运行整个套房之前, 我们用它来完全清理数据库 。

DatabaseCleaner.clean_with :truncation

这需要时间取决于您的 db 。 之后我们使用交易策略来保持速度更快

DatabaseCleaner.strategy = :transaction

这意味着在每次交易在 db( 创建了一个保存点) 和此交易中的测试运行开始之前, 交易将开始。 测试完成后, 将进行回放, 下一个显示将再次有一个干净的 db 。 请查看 < a href=" https:// github. com/ bmabey/ database_ cleaner" rel=“ nofollow > https://github. com/ bmabey/ database_ cleaner

如果你确实需要在同一规格下创建两个这样的记录,那么你就需要创建某种柜台。比如:

class Counter
  def initialize
    @count = 0
  end

  def email
    @count += 1
    "something_cool#{@count}@whatever.com"
  end
end

然后用这个计数器给您每次发一个独特的电子邮件。 可能值得您检查工厂Girl宝石 < a href="https://github. com/ thoughtbot/factory_girl/ wiki/ Usage" rel = “ nofollow" >https://gitub. com/ thoughtbot/factory_girl/wiki/ Usage < / a > 并查找序列。 如果您正在建造小宝石, 那么您可能不想添加许多依赖关系 。 good Luck. TDD all the way!

没有系统所有部分的控制权将产生更大的问题。 在单位测试中, 您可以愉快地将所有外部API 都挤掉, 并只返回预期的结果 。 当然, 如果 API 更改的话, 这仍然会过去 。 分布式系统的整合测试是一个复杂的问题, 基本上, 您需要像系统内部的交易一样, 将系统的所有部分都放到原状态 。 由于您没有这种控制, 我将直接放弃它 。

问题回答

暂无回答




相关问题
Selenium not working with Firefox 3.x on linux

I am using selenium-server , selenium rc for UI testing in my application . My dev box is Windows with FireFox 3.5 and every thing is running fine and cool. But when i try to run selenium tests on my ...

Best browser for testing under Safari Mobile on Linux?

I have an iPhone web app I m producing on a Linux machine. What s the best browser I can use to most closely mimic the feature-limited version of Safari present on the iPhone? (It s a "slimmed down" ...

Code Coverage Tools & Visual Studio 2008 Pro

Just wondering what people are using for code coverage tools when using MS Visual Studio 2008 Pro. We are using the built-in MS test project and unit testing tool (the one that come pre-installed ...

Is there any error checking web app cralwers out there?

Wondering if there was some sort of crawler we could use to test and re-test everything when changes are made to the web app so we know some new change didn t error out any existing pages. Or maybe a ...

热门标签