Ruby基本RSpec测试未通过
Ruby basic RSpec test does not pass
我无法理解为什么以下 Rspec 测试没有通过 -
require "rspec"
require_relative "file-to-be-tested"
describe Customer do
it "is valid with firstname" do
customer = Customer.new("handy")
expect(customer).to be_valid
end
end
对应的Class定义-
class Customer
attr_reader :firstname
def initialize(firstname)
@firstname = firstname
end
end
这两个代码片段位于同一文件夹中的不同文件中,因此当我在终端中 运行 ~rspec <first-filename>
时,出现以下错误 -
F
Failures:
1) Customer is valid with firstname
Failure/Error: expect(customer).to be_valid
expected #<Customer:0x007f90e50f3110> to respond to `valid?`
# ./poodr/poodr_rspec.rb:8:in `block (2 levels) in <top (required)>'
Finished in 0.00551 seconds (files took 0.52876 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./poodr/poodr_rspec.rb:6 # Customer is valid with firstname
您希望 be_valid 测试做什么?问题是客户 class 没有名为 valid 的方法?您的测试正在尝试测试哪个。
如果您在进行测试驱动开发,那么可以推动您的测试:
class Customer
def valid?
true
end
end
您现在有了一个名为 valid 的方法,您的测试将通过。显然它不应该总是正确的,所以你的下一步是扩展有效的定义?。需要做什么检查才能知道客户是否有效?
be_valid
是一种 rspec-rails 方法,但看起来您只是直接使用 rspec。你可以这样做:
require "rspec"
require_relative "file-to-be-tested"
describe Customer do
it "is valid with firstname" do
expect { Customer.new('handy') }.to_not raise_error
end
end
我无法理解为什么以下 Rspec 测试没有通过 -
require "rspec"
require_relative "file-to-be-tested"
describe Customer do
it "is valid with firstname" do
customer = Customer.new("handy")
expect(customer).to be_valid
end
end
对应的Class定义-
class Customer
attr_reader :firstname
def initialize(firstname)
@firstname = firstname
end
end
这两个代码片段位于同一文件夹中的不同文件中,因此当我在终端中 运行 ~rspec <first-filename>
时,出现以下错误 -
F
Failures:
1) Customer is valid with firstname
Failure/Error: expect(customer).to be_valid
expected #<Customer:0x007f90e50f3110> to respond to `valid?`
# ./poodr/poodr_rspec.rb:8:in `block (2 levels) in <top (required)>'
Finished in 0.00551 seconds (files took 0.52876 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./poodr/poodr_rspec.rb:6 # Customer is valid with firstname
您希望 be_valid 测试做什么?问题是客户 class 没有名为 valid 的方法?您的测试正在尝试测试哪个。
如果您在进行测试驱动开发,那么可以推动您的测试:
class Customer
def valid?
true
end
end
您现在有了一个名为 valid 的方法,您的测试将通过。显然它不应该总是正确的,所以你的下一步是扩展有效的定义?。需要做什么检查才能知道客户是否有效?
be_valid
是一种 rspec-rails 方法,但看起来您只是直接使用 rspec。你可以这样做:
require "rspec"
require_relative "file-to-be-tested"
describe Customer do
it "is valid with firstname" do
expect { Customer.new('handy') }.to_not raise_error
end
end