问题标签 [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.
node.js - 如何让 Mocha 测试编译 Ruby-ish Unicode 字符串?
我正在从Node.js
应用程序调用 Telegram Bot API。我需要向 API 发送一些 Unicode 字符,它只接受 Ruby 格式(\u{1F680}
输出)。我将这种格式的所有 Unicode 字符存储在一个文件中,该文件是实际向 API 发送消息的人所需要的。
Node.js 对此没问题,它工作正常。但是,当我在相同的代码上运行 Mocha 测试时,它会导致Unexpected token ILLEGAL
错误,它不喜欢 Ruby Unicode 格式。测试本身甚至没有使用这个 Unicode 字符,编译失败了。
如果我将其更改为 JavaScript Unicode 格式\u1F680
(
我尝试了以下方法:
- 以 JavaScript 格式存储
\u1F680
,然后{}
在运行时添加 ,但它输出不同的字符 (Ὠ0),对应于前四个 HEX 值 (\u1F68
) 和额外的0
。 - 以 JavaScript 格式存储
\u1F680
并添加编码 Ruby 函数code.encode('UTF-8')
,以防 Telegram Bot API 执行 Ruby 代码。也不起作用,它会打印\u1F680.encode('UTF-8')
.
有什么方法可以让 Mocha 接受 Ruby-ish ( \u{1F680}
) 格式?
ruby - 用摩卡模拟 Time.now
为了模拟mochaTime.now
gem ,我使用以下 oneliner。
但是运行此代码会返回以下错误,因为Time.parse()
使用了模拟Time.now()
方法。
你如何模拟 Time.now mocha
?
ruby-on-rails - 无法在 Windows 下使用 Ruby 2.0.0 为 Redmine 运行任何单元测试。这有可能吗?
任何为 Redmine 运行单元测试的尝试,例如:
产生这个:
我已经到处搜索了。到目前为止没有运气。
有任何想法吗?会很好。
PS:摩卡安装:
ruby-on-rails - 功能测试中类的存根特定实例
我想测试一个特定的图标是否会显示在一个用户的视图中,该用户的连续性超过 X 天。所以我需要存根模型的一个streak
方法。但User
我希望它只为基于它的特定用户存根方法uid
。测试代码如下。
返回值是一个数组,数组中的第一个值是连续的天数,第二个值是该连续的帖子数。
该行User.any_instance.stubs(:streak).returns([8,10])
存根类的任何实例User
。我怎样才能存根它以便它只存根那些实例:uid => 1
?
ruby - 我怎样才能适当地模拟一个返回产量的方法?
在 Ruby 中,采用块的方法看起来像这样是很常见的:
看起来像这样的方法也是相当惯用的:
我想为此编写一个不会影响文件系统的规范,以确保它从文件中提取正确的单词,例如:
这里的问题是,通过模拟对 的调用File.open
,我还删除了它的返回值,这意味着frobnicate
它将返回nil
。但是,如果我要向链中添加类似File.returns('foo bar baz')
的东西,我最终会得到一个实际上并没有触及我感兴趣的任何代码的测试;块中的内容frobnicate
可以做任何事情并且测试仍然会通过。
我如何frobnicate
在不影响文件系统的情况下适当地测试我的方法?我并不特别依赖任何特定的测试框架,所以如果你的答案是“使用这个可以为你做的很棒的 gem”,那么我可以接受。
javascript - 如何允许 Chrome 以编程方式使用我的麦克风?
我目前正在尝试运行一些使用 webdriverjs 和 chromedriver 进行的测试,但它们需要麦克风权限。
这是显示的弹出窗口:
我试过了:
但它没有用。
我也试过
它也没有工作!我想这不是一个普通的警报。
有用的链接:
如何以编程方式授予他们权限?
有没有任何标志或其他方式解决这个问题?
ruby-on-rails - Rails after_filter 是在 Mocha 自动调用 unstub 之前还是之后执行的?
我的控制器类继承自 ActionController::Base。
我正在使用 rails 2 和 ruby 1.9.3。
我正在使用 Mocha 来消除对 Perforce 的调用,因此我的测试不依赖于与 perforce 的连接。
在我的 rails after_filter 中,我调用了我的存根方法之一,希望它还没有被取消存根。在正常应用程序中,它会释放 Perforce 连接。
我收到此错误消息:
意外调用:Api::BuildsController.perforce_service()
该方法perforce_service
是我存根的方法。我怀疑它已经被 Mocha 取消了之后被调用,但我不确定。相对于 after_filter,Mocha 的取消存根何时完成?我应该如何构建这个?
当我尝试在 pry 中手动存根和取消存根对象的方法时,在我调用 unstub 后该方法仍然是可调用的,这不是我所期望的。我希望 unstub 将恢复原始方法,或者如果它没有原始方法,则将其恢复为未定义方法的状态。它的真正作用是什么?
笔记:
如果你使用 Rails,Mocha 文档说把它放在 test_helper.rb 中:
但是,如果我将它添加到我的 Gemfile 并运行捆绑安装:
然后我得到一个错误:
我在这里做错了什么?
ruby - 模拟如何工作摩卡宝石?
在使用 minitest 测试我的产品之前,我是 mocha gem 的新手。然后我遇到了一种情况,我的应用程序正在向 facebook 发布工作。它选择一些工作,然后在 facebook 上发布它们。所以有人告诉我使用模拟,我发现了 mocha gem。我看到一个样本测试。
但我不明白。在我的作业控制器中,我进行了验证,并且无法成功保存空作业。但是在这里模拟上面的测试断言可以在没有必填字段的情况下保存作业。那么我们在上面的测试用例中究竟测试了什么?
ruby - 如何在 Mocha 中对具有特定参数的方法进行存根(并保留其他参数未存根的调用)?
这个问题可能看起来像这个问题的重复,但接受的答案对我的问题没有帮助。
语境
由于 Rails 5 不再支持在控制器测试中直接操作会话(现在继承自 ActionDispatch::IntegrationTest),因此我将走上模拟和存根的黑暗道路。
我知道这是不好的做法,并且有更好的方法来测试控制器(我确实理解他们转向集成测试),但我不想运行完整的集成测试并在单个测试中调用多个操作只是为了设置一个特定的会话变量。
设想
使用Mocha模拟/存根会话变量实际上非常容易:
问题是,Rails 在会话中存储了很多东西(只需session.inspect
在您的一个视图中的任何地方做一个)并且存根该:[]
方法显然会阻止访问它们中的任何一个(因此session[:some_other_variable]
在测试中将不再起作用)。
问题
:[]
有没有办法仅在使用特定参数调用时存根/模拟该方法,并使所有其他调用不被存根?
我本来希望像
但我找不到完成它的方法。
ruby - Ruby Mocha 期望第一个参数是一个符号
我试图断言方法调用发生在第一个参数是这样的符号的地方:
Foo.bar(:some_key, {})
在这个阶段,我真的不在乎第二个论点是什么。
我试过了:
Foo.expects(:bar).with(includes(:some_key))
以及此处文档中的其他变体。当我期望带有任何参数的方法调用时测试通过。
有任何想法吗?