问题标签 [ruby-mocha]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1325 浏览

ruby - 在 sinatra 和 ruby​​ 中测试机架超时

这是我认为很简单的事情,但我在测试 rack-timeout gem 时遇到了问题。我有一个带有端点的 sinatra 基类,它执行一些逻辑。

有关 rack-timeout gem 的更多信息在这里。我正在尝试设置一个测试,我可以发送一个我知道需要几秒钟才能失败的请求。

这是到目前为止的测试

有很多方法可以做到这一点,但我不确定它们将如何实施

  1. 将“/dosomething”方法作为测试的一部分覆盖到 {sleep 3}
  2. 执行与上述相同的操作,但使用 stubbing 或 mocking 库
  3. 不要在测试中使用 get "/dosomething",而是创建一个 net::http 响应来保持请求打开。

对此的任何想法将不胜感激。

0 投票
2 回答
244 浏览

node.js - 从来没有写过任何自动化测试,我应该如何开始行为驱动的开发?

多年来,我一直在使用多种语言进行编程,并且喜欢认为我通常很擅长它。但是,我从未编写任何自动化测试:没有单元测试,没有 TDD,没有 BDD,什么都没有。

试图开始为我的项目编写适当的测试套件。我可以看到在进行任何更改后能够自动测试项目中的所有代码的理论价值。我可以看到像 RSpec 和 Mocha 这样的测试框架应该如何使设置和运行上述测试相当容易,我喜欢它们为编写测试提供的 DSL。

但我从未设法为我的代码的任何部分编写实际的单元测试。我写的东西似乎从来没有以实际有用的方式进行测试。

  • 在使用它们的上下文之外,函数似乎不是非常可调用的。我编写的许多函数都会进行 HTTP 请求调用、数据库查询或其他一些不易测试的调用。
  • 一些函数返回 HTML 字符串。我可以将 HTML 字符串与同一字符串的硬编码版本进行比较,但这似乎只会限制我更改该部分代码的能力。再加上在我的测试代码中有大量的 HTML 是一团糟。
  • 我可以将模拟/间谍对象传递给一个方法,并确保它们得到某些方法调用,但据我所知,这只是测试我正在“测试”的方法的实现细节。

我将如何开始正确的 BDD 测试?(我更喜欢使用 Mocha 和 Node.js 来做这件事,但是关于 BDD 的一般建议也很好。)

0 投票
1 回答
2610 浏览

ruby - Mocha 最多期望一次,调用两次,但是方法显然只调用一次

我正在使用 Mocha 进行模拟测试。下面是相关代码:

测试失败,抱怨有“意外调用:#.fetch_points_per_game(any_parameters)”

我对我的代码的理解是如果@point_per_game 为nil,则将调用fetch_points_per_game,否则,将缓存结果以供将来调用points_per_game。那么为什么测试抱怨 fetch_points_per_game 被调用了两次呢?

0 投票
2 回答
2776 浏览

ruby-on-rails - 存根葡萄帮手

我有带有 Grape API 的 Rails 应用程序。

该接口由 Backbone 完成,Grape API 为其提供所有数据。

它返回的只是用户特定的东西,所以我需要参考当前登录的用户。

简化版如下所示:

API初始化:

端点:

API 助手:

所以,正如你所看到的,我从 Warden 那里得到了当前用户,它工作正常。但问题在于测试。

如何使用某些特定用户存根助手的方法 *current_user*?

我试过了:

  • 设置 env/request,但在调用get方法之前它不存在。
  • 使用 Mocha 存根 MyAPI::APIHelpers#current_user 方法
  • 使用 Mocha 存根 MyAPI::Endpoints::Notes.any_instance.stub

编辑:目前,它是这样存根的:

规格:

规范/补丁/api_helpers.rb:

但这绝对不是答案:)。

0 投票
2 回答
4528 浏览

ruby - 如何测试使用 RSpec 和 Mocha 调用的混合类方法?

我有一个模块:

类使用如下:

如何验证MyCommand.execute电话do_something?我曾尝试使用 mocha 进行部分模拟,但在do_something不调用时它不会失败:

0 投票
3 回答
1192 浏览

ruby-on-rails - 仅当特定实例变量具有值时,如何存根实例的方法?

我有一个对象MyObject

我只想resultsstat_to_load = "times". 我怎样才能做到这一点?我试过了:

但它不起作用。任何想法?

0 投票
1 回答
466 浏览

ruby - 如何在 Ruby 中使用 Mocha 测试工厂模式?

我无法让这个简单的摩卡测试工作

免责声明我是摩卡的新手!

我的Factory班级

我的测试代码

输出

0 投票
3 回答
5246 浏览

ruby - 如何在实例变量上存根方法?

所以我有这个简单的 ruby​​ 类:

而且我想测试Request接收两种send_chain方法的隔离RequestAuthorizerRequestFilter实现。为此,我正在尝试使用一些存根:

你看看有什么问题。stubs(:new)返回nil并且没有实例RequestAuthorizerRequestFilter实例变量,GetRequestList我们得到一个错误。我不知道如何在实例变量上存根方法。有什么建议么?

0 投票
1 回答
963 浏览

ruby - 如何在 Ruby 中使用 Mocha 模拟实际的 Object#method 调用?

直接与大脑交互并不容易,所以我使用了一些网关模式和一些依赖倒置。

NumberCruncher是我Brain班级的包装。

我在测试时遇到错误:

NameError:类“Mocha::Mock”的未定义方法“multiply_by_100”

这是测试

我假设这是因为&@brain.method(:multiply_by_100)电话和摩卡咖啡通过使用method_missing或其他东西起作用。唯一的解决方案似乎是更改设置

但是,我认为这种解决方案很糟糕。它很快就变得一团糟,并且Fake*在我的测试中放置了大量的课程。有没有更好的方法来用摩卡做到这一点?

0 投票
1 回答
163 浏览

ruby-on-rails - 使用 mocha 测试许多条件

使用 mocha gem 测试以下方法的最佳方法是什么?

测试“AND”和“OR”条件的最佳实践是什么?我应该创建许多测试来涵盖所有可能性,还是希望选项涵盖所有可能性?


我正在使用 rails 4 + 测试单元。

例如,当我仅使用 && 进行测试时:

我正在测试:

问题是当我有“或”条件时。使用第一种方法( can_create? )我不能这样做:

因为(所有者?和成员?方法可以是真/假)。