assert (minitest) 的 RSpec 等效语法是什么
What is the RSpec syntax equivalent for assert (minitest)
我正在关注 Michael Hartl 在 Rails 教程中的 Ruby。我观察到他使用 minitest 运行 他的测试。我使用 RSpec。下面是我想用 RSpec
复制的教程中的一行代码
test "email validation should accept valid addresses" do
valid_addresses = %w[user@example.com USER@foo.COM A_US-ER@foo.bar.org
first.last@foo.jp alice+bob@baz.cn]
valid_addresses.each do |valid_address|
@user.email = valid_address
assert @user.valid?, "#{valid_address.inspect} should be valid"
end
end
这就是我将在 RSpec 中执行此操作的方式。
it "email validation should accept valid addresses" do
valid_addresses = ["user@example.com", "USER@foo.COM", "A_US-ER@foo.bar.org",
"first.last@foo.jp", "alice+bob@baz.cn"]
valid_addresses.each do |valid_address|
user.email = valid_address
expect(@user.valid?).to be true, "#{valid_address.inspect} is not correct"
end
end
但是,当我 运行 这个测试时,我得到了 Argument error。看来 RSpec 在测试用例中只需要一个参数。
您收到的错误消息到底是什么。看起来你有错字。应该
user.email = valid_address
成为
@user.email = valid address
您提供了 2 个参数,而 expect 语句需要一个。
expect(@user.valid?).to be true
RSpec 认为您将一个参数传递给 to
方法,将两个参数传递给 be
方法,因此它给您一个错误。它将您的陈述视为:
expect(@user.valid?).to(be(true, "#{valid_address.inspect} is not correct"))
因此,您可以将规范更改为以下内容,它应该可以工作:
expect(@user.valid?).to be(true), "#{valid_address.inspect} is not correct"
在这里,RSpec 看到两个参数被传递给 to
方法,这是有效的。
我正在关注 Michael Hartl 在 Rails 教程中的 Ruby。我观察到他使用 minitest 运行 他的测试。我使用 RSpec。下面是我想用 RSpec
复制的教程中的一行代码test "email validation should accept valid addresses" do
valid_addresses = %w[user@example.com USER@foo.COM A_US-ER@foo.bar.org
first.last@foo.jp alice+bob@baz.cn]
valid_addresses.each do |valid_address|
@user.email = valid_address
assert @user.valid?, "#{valid_address.inspect} should be valid"
end
end
这就是我将在 RSpec 中执行此操作的方式。
it "email validation should accept valid addresses" do
valid_addresses = ["user@example.com", "USER@foo.COM", "A_US-ER@foo.bar.org",
"first.last@foo.jp", "alice+bob@baz.cn"]
valid_addresses.each do |valid_address|
user.email = valid_address
expect(@user.valid?).to be true, "#{valid_address.inspect} is not correct"
end
end
但是,当我 运行 这个测试时,我得到了 Argument error。看来 RSpec 在测试用例中只需要一个参数。
您收到的错误消息到底是什么。看起来你有错字。应该
user.email = valid_address
成为
@user.email = valid address
您提供了 2 个参数,而 expect 语句需要一个。
expect(@user.valid?).to be true
RSpec 认为您将一个参数传递给 to
方法,将两个参数传递给 be
方法,因此它给您一个错误。它将您的陈述视为:
expect(@user.valid?).to(be(true, "#{valid_address.inspect} is not correct"))
因此,您可以将规范更改为以下内容,它应该可以工作:
expect(@user.valid?).to be(true), "#{valid_address.inspect} is not correct"
在这里,RSpec 看到两个参数被传递给 to
方法,这是有效的。