Ruby 如何在PORO';s
嗨 我正试着把我的一些眼镜擦干。我提取了一个断言类,该类执行两个Ruby 如何在PORO';s,ruby,rspec,rspec-expectations,Ruby,Rspec,Rspec Expectations,嗨 我正试着把我的一些眼镜擦干。我提取了一个断言类,该类执行两个shoulds。。。但是大多数RSpec的期望魔法已经不起作用了 我将尝试构造一个简单的示例来说明我的问题 被测对象: class-Foo def是否有_bar?;是的;结束 结束 我的断言类: 类MyAssertions def self.assert_一切正常 @foo=foo.new @foo.has_bar?.should==true#有效! @foo.has_bar?应为_true#未定义的局部变量或方法`be_true
should
s。。。但是大多数RSpec的期望魔法已经不起作用了
我将尝试构造一个简单的示例来说明我的问题
被测对象:
class-Foo
def是否有_bar?;是的;结束
结束
我的断言类:
类MyAssertions
def self.assert_一切正常
@foo=foo.new
@foo.has_bar?.should==true#有效!
@foo.has_bar?应为_true#未定义的局部变量或方法`be_true`
@foo.have_bar应为未定义的局部变量或方法'have_bar`
结束
结束
我的规格:
它“测试”了一些事情
@foo=foo.new
@foo.应该有酒吧的工作!
由于上述错误,MyAssertion.assert_everything_is_ok#无法工作
结束
为什么我不能在简单的旧ruby对象中使用rspec expections的语法糖?经过更多的尝试,我想出了以下解决方案:
class MyAssertions
include RSpec::Matchers
def assert_everything_is_ok
@foo = Foo.new
@foo.has_bar?.should == true # works!
@foo.has_bar?.should be_true # works now :)
@foo.should have_bar # works now :)
end
end
诀窍是
包括RSpec::Matchers
模块。我使用实例方法而不是类方法。经过更多的尝试,我想出了这个解决方案:
class MyAssertions
include RSpec::Matchers
def assert_everything_is_ok
@foo = Foo.new
@foo.has_bar?.should == true # works!
@foo.has_bar?.should be_true # works now :)
@foo.should have_bar # works now :)
end
end
诀窍是包括RSpec::Matchers
模块。我使用实例方法而不是类方法。一种更像RSpec的方法是:
更“类似于RSpec”的方法是:
那很好。谢谢你指出这一点。它非常适合我发布的简化示例。然而,我的现实世界问题更复杂,页面对象和行为对象需要访问匹配器(规范本身之外)。这很好。谢谢你指出这一点。它非常适合我发布的简化示例。然而,我的实际问题更为复杂,其特点是页面对象和行为对象需要访问匹配器(规范本身之外)。