RSpec中“to”方法的问题(未定义方法)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RSpec中“to”方法的问题(未定义方法)相关的知识,希望对你有一定的参考价值。
这里对rspec完全陌生,这一点很明显。
以下rspec文件失败:
require_relative( 'spec_helper')
describe GenotypingScenario do
it 'should add genes' do
scen = GenotypingScenario.new
gene = Gene.new( "Pcsk9", 989 )
scen.addGene( gene )
expect( gene.id).to eq( 989 )
ct = scen.genes.count
expect (ct).to equal(1)
expect (5).to eq(5)
end
end
具体来说,最后两个expect()行失败,出现如下错误:
NoMethodError: undefined method `to' for 1:Fixnum
然而,第一个期望线工作正常。而gene.id绝对是一个FixNum。
Ruby 2.1.2,rspec 3.0.0,Mac OS 10.9.4上的RubyMine。
有什么想法吗?
你最后两个expect
行的间距正在绊倒Ruby解释器。
expect (5).to equal(1)
被Ruby评估为:
expect(5.to(equal(1)))
当你真正的意思是:
expect(5).to(equal(1))
这是调用expect()
的返回值,它有一个方法to
; RSpec没有扩展Ruby内置类型。所以你应该将你的最后两个期望改为:
expect(ct).to equal(1)
expect(5).to eq(5)
当我在测试中找到一条预期json响应not to be empty
的行时,我正在使用TDD跟踪Rails API教程。
这是我写它的方式:
expect(json).not_to_be_empty
我得到了那个不友好的NoMethodError: undefined method 'not_to_be_empty'
我在这个帖子上找到了接受的答案,它睁开了我的眼睛。
然后我将线路改为:
expect(json).not_to be_empty
我知道你仍然可以寻找差异,欢迎来到RSpec!我删除了not_to
和be empty
之间的下划线来制作两个单词。它的工作方式就像......好的代码。
以上是关于RSpec中“to”方法的问题(未定义方法)的主要内容,如果未能解决你的问题,请参考以下文章
在 Rails 中使用 RSpec 和 Capybara 时未定义的方法“访问”
未定义方法`permit'表示“1”:字符串 - RSPEC
Rails - RSpec NoMethodError:未定义的方法
Rspec 测试:NoMethodError - nil.Nilclass 的未定义方法“id”
RSpec:#<RSpec::Core::ExampleGroup::Nested_1:0x007fcc2f626d50> 的未定义方法“double”