题
例如,让我们说有一个 Question
模型,有的布尔的领域 answered
和 closed
.我将如何测试行为是一个问题 should be read only when marked as answered
使用最高反射率?这似乎是它的行为模式,但是我不确定如何最好地进行测试。我应该采用一个过滤器之前为这种行为,并添加一个错误说你不能修改的回答问题吗?或者是有更好的方式来做到这一点?我只是学习最高反射率和BDD。
解决方案
取决于你如何需要它的工作,但是...
describe Question do
it "should be read only when marked as answered" do
question = Question.new(:title => 'old title')
question.answered = true
question.save
# this
lambda {
question.title = 'new title'
}.should raise_error(ReadOnlyError)
# or
question.title = 'new title'
question.save
question.title.should == 'old title'
# or
quesiton.title = 'new title'
question.save.should be_false
end
end
或许是你想的错误提出上救?或者,也许,没有错误,它只是默默并不能改变的价值?这是给你你想要如何实现它,但是该方法是一样的。
- 设置你的目的在状态你想要的规范他们
- 确保你的对象在该国做什么你期待的
这样设置一个回答了问题,然后看看你能否改变其数据。如果你不能,那么规格的通过。这是给你的你怎么想的行为模型的工作。和伟大的事情BDD是你认为这个界面第一,由于必须实际使用对象API以规范。
不隶属于 StackOverflow