【发布时间】:2009-07-29 18:40:48
【问题描述】:
我有一个测试失败,即使我在浏览器中测试该操作确实有效。我的测试似乎有问题。
我正在使用 Shoulda 和固定装置。
require 'test_helper'
class AddressesControllerTest < ActionController::TestCase
context 'on PUT to :update' do
setup do
put(:update, {
:id => addresses(:mary_publics_address).id,
:street1 => '123 Now St.'
}, { :user_id => users(:stan).id})
end
should 'update the Address' do
a = Address.find(addresses(:mary_publics_address).id)
assert(a.street1 == '123 Now St.', 'Attribute did not get updated.')
end
end
end
“属性未更新”失败。
这里是被测控制器代码:
class AddressesController < ApplicationController
def update
@address = Address.find(params[:id])
@address.update_attributes!(params[:address])
render(:text => "Address with ID #{params[:id]} updated")
end
end
【问题讨论】:
-
“代码有效,但测试失败”。这正是我在测试团队打电话时的第一个想法:P
-
a.street1 会返回什么?
-
只是为了澄清我的最后评论;我在问 a.street1 实际上返回了什么,而不仅仅是假设是什么。作为测试人员,从测试中打印出预期值和实际值可能非常有见地。
-
好的,打印出来。以应该被替换的原始值返回。 (“东圣马科斯大道 100 号,套房 412”)
标签: ruby-on-rails unit-testing tdd shoulda