我的考试有问题。
我有这样的规范:
context 'when no section is supplied' do
it 'raises an ArgumentError regarding the missing section_id argument' do
expect do
described_class.with_section
end.to raise_error(ArgumentError)
.with_message /wrong number of arguments \(given 0\, exp
我在一个红宝石中有一个client对象,需要使用一个web服务。我正在测试,以验证它是否可以正确初始化,并抛出一个错误,如果所有的参数没有传入。
这是我的规格:
describe 'Contentstack::Client Configuration' do
describe ":access_token" do
it "is required" do
expect { create_client(access_token: nil) }.to raise_error(ArgumentError)
end
en
在ruby on rails中,是否可以将多个救援语句合并为一个。
begin
//do something
rescue ArgumentError => e
e.message
rescue NameError => e
e.message
rescue StandardError => e
e.message
end
组合成类似下面的内容
rescue ArgumentError, NameError, StandardError => e
e.message
我正在为Ruby入门的任务进行测试驱动的开发。我的TestObject类应该能够用两个参数(a和b )初始化,但是如果b不是一个数字,那么应该引发一个ArgumentError。下面是我的初始化方法,我不知道如何引发异常,然后处理它,以防止所有其他测试也失败。任何帮助都是值得赞赏的,我的教授还没有教我们Ruby中的异常,除了尝试着开始、提高、拯救之外,我还没有在网上找到太多的帮助,但这对我没有用。
def initialize(a,b)
@a = a
@b = b
raise ArgumentError unless b.is_a?
end
我有类似于以下内容的collector.rb文件:
class Collector
def initialize(input)
raise ArgumentError, 'must be positive integer' unless input.to_i.positive?
end
# more code...
end
begin
Collector.new(*ARGV).do_something
rescue ArgumentError => e
warn e.message
end
所以当我在终端中做$ ruby collector.
我在测试这样的东西:
describe "#check_name" do
it 'should raise ArgumentError with equal name' do
@article = Factory.build(:article)
@article.id = 3
lambda { @article.check_name(@article.id) }.
should raise_error(ArgumentError)
end
end
而模型:
def check_name(article_id)
to
我的脚本只需要接受“普通”整数,并在任何其他情况下(字母、特殊符号、浮动、多个参数)引发参数错误。不幸的是,当传递的参数是像0b1111这样的十六进制的表示时,脚本将它解释为一个整数并接受它。
这是我的剧本:
begin
price = Integer ARGV[0]
rescue
raise ArgumentError "the entered value has to be an integer"
end
if ARGV.length > 1
raise ArgumentError, "wrong number of arguments (g
我有一段我正在尝试测试的代码:
def error_from_exception(ex)
if ex.is_a?(ActiveRecord::RecordInvalid)
...
要进入if块,我需要传入正确的ex参数。
如何创建ActiveRecord::RecordIn有效值?
用rspec,我试着做这样的事情:
context 'exception is ActiveRecord::RecordInvalid' do
it 'returns the validation error' do
begin
raise ActiveR
我对python语言很陌生,请在这一点上与我保持一致。
我想在两个单独的线程中运行两个状态机,通过队列相互通信。我使用包创建状态机。
我的理解是,执行操作的所有操作/代码都必须隐藏在事务中。
这些行取自转换包的示例,显示了将代码放在何处进行转换。
# escapades. Because the legal department says so.
self.machine.add_transition('complete_mission', 'saving the world', 'sweaty',
在这些来自无服务器网站和的文档中,我们可以在serverless.yml文件中找到单词hellostepfunc1:。我找不到它的参考资料。我不明白它是什么,我也找不到任何关于它的引用,即使在状态机被创建到AWS之后也是如此。
如果我删除它,我会得到以下错误
Cannot use 'in' operator to search for 'role' in myStateMachine
但是,例如,如果我将其名称更改为someName,则没有错误,状态机将正常工作。
我可以假设它只是一个标识符,但我不确定。我在哪里可以找到它的参考资料?
考虑一个函数,它根据传递的参数执行一些异常处理:
List range(start, stop) {
if (start >= stop) {
throw new ArgumentError("start must be less than stop");
}
// remainder of function
}
如何测试是否引发了正确类型的异常?
为什么下面放在spec/factories.rb中的代码会给出下面的错误输出:
FactoryGirl.create :user do |f|
f.sequence(:email) { |n| "test#{n}@example.com" }
f.password "test"
end
错误:
`find': Factory not registered: user (ArgumentError)
这个看似简单的代码片段的行为令人震惊:
class Nex < StandardError
end
throw Nex.new
返回ArgumentError: uncaught throw #<Nex: Nex>
好吧,也许我得试着抓住:
begin
throw Nex.new
rescue Nex
end
返回“`ArgumentError:未被抛出”
救ArgumentError怎么样?
begin
throw Nex.new
rescue ArgumentError => e
puts e
end
返回uncaught throw #<Nex
我正在使用aasm gem来处理我项目中的状态转换。我有一个简单的模型,看起来像这样:
class TransferPostingBid < ActiveRecord::Base
include AASM
aasm :status do
state :offered, initial: true
state :wait_for_pap_confirmation
state :confirmed_by_pap
state :retracted_by_pap
event :pap_choosed do
transitions f
在使用续集中的事务时,您应该能够引发异常并使其从事务块中冒泡。
从续集文档来看:
如果引发任何其他异常,则回滚事务,并在块外引发异常:
DB.transaction do # BEGIN
raise ArgumentError
end # ROLLBACK
# ArgumentError raised
然而,似乎我无法捕捉到ArgumentError,因为续集将它封装在Sequel::DatabaseError中
begin
DB.transaction do
raise ArgumentError.new('Hey')
end
rescue =&g
当我尝试配置我的水豚测试来响应js时,我遇到了问题。这是我的测试:
test "creating_expense", js: true do
visit expenses_path
click_link('New Expense')
end
错误是: /var/lib/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/testing/declarative.rb:11:in‘`test':参数数量错误(给定2,预期1) (ArgumentError)