2

Michael Hartl rails チュートリアルに取り組んでいます。テストを実行すると、次のエラーが発生します。

Error:
UserTest#test_associated_microposts_should_be_destroyed:
ArgumentError: unknown command 'a'
test/models/user_test.rb:73:in 'test'
test/models/user_test.rb:73: in 'block in <class:UserTest>'

「test/models/user_test.rb」は以下の通りです。

test "associated microposts should be destroyed" do
@user.save
@user.microposts.create!(content: "Lorem ipsum")
assert_difference 'Micropost.count', -1 do
@user.destroy
end

テストは簡単で、モデル (user.rb) で次の行をテストすることのみを目的としています。

has_many :microposts, dependent: :destroy

この文を次のようにコメントすると:

has_many :microposts#, dependent: :destroy

私は、予想通り、得る

Failure: [...] "Micropost.count" didn't change by -1. Expected:38 Actual 39.

"dependent: :destroy" ステートメントのコメントを外すと、この "unknown command" エラーが発生します。このエラーがどのように生成される可能性が最も高いか、レールのコンテキストでの「コマンド」とは何か(レールコンソールを除く)、それを解決するために最初に探す場所(モデル?コントローラー?)について、誰かがガイダンスを提供できますか? ありがとう。

4

3 に答える 3

0

私はちょうど今同じ問題を抱えていましたが、これがあります。

上部にmicropost_test.rbこのセットアップがあります

//first post creation for @user
def setup
    @user = users(:michael)
    # This code is not idiomatically correct.
    @micropost = @user.microposts.build(content: "Lorem ipsum")
end

//second post creation in test for @user
test "associated microposts should be destroyed" do
    @user.save
    @user.microposts.create!(content: "Lorem ipsum")
    assert_difference 'Micropost.count', -1 do
    @user.destroy
end

投稿は既に作成されているため、ユーザーがテスト中の別の投稿で保存されると、そのユーザーは実際には削除され、彼との 2 つの投稿はなくなります。したがって、期待されるのは -2 の差です。

于 2016-12-29T00:51:56.097 に答える