0

私は以前にRailsで開発しました。テストを書くのはとても簡単だと思い、最近、MVC .NET を主力製品に使用するプロジェクトに移りました。

MVC .NET を使用する方法を理解しましたが、モデルの単体テストをどのように作成すればよいかまだわかりません。レールでユニットテストを書く方法について、非常に簡単な汚い例を示します。

describe "user.name_is_newton?" 

  context "user's name is newton" do
    before :each do
      @user = User.create(:name => "newton")
    end

    it { @user.name_is_newton?.should be_true }
  end    
end

切り替えるのが難しいと感じている理由は、テスト用に別のデータベースを提供する Rails に慣れているからです。(どうやら) 舞台裏でテスト データベースにユーザー エントリを作成し、テストを非常に簡単に記述できるようにします。MVC .NET で同様のテストを作成する方法がわかりません。どんな助けでも大歓迎です!ありがとう!

4

1 に答える 1

0

MVC では、通常、単体テストのためにデータベースをまったく操作したくないでしょうが、IEnumerable<[entity]> または IQueryable<[entity]> または単に動作するメソッドをテストするようにリファクタリングしてみてくださいエンティティ自体。そうすれば、ユニットはできるだけ一般的な「もの」に取り組んでいます。でも、あなたがすでに知っていることを言っているのかもしれません。

より複雑なオブジェクトに絶対に取り組む必要がある場合は、それらをモックするか、代わりにインターフェイスを使用するようにリファクタリングして、インターフェイスを単にモックする必要があります。

HttpContextBase、HtmlHelper、HttpResponseBase、DbSet などの便利な MVC モックと、ShouldEqual などのヘルパーのライブラリがあります。不必要にここに貼り付けるには長すぎますが、お問い合わせください。喜んで提供します。彼らはMoqを使用しています。

上記の Moq を使用した例は次のようになります。

テスト方法:

public User CreateUser(string name)
{
    return new User { Name = name };
}

単体テスト:

[Test]
public void CreateUser_NameIsNewton()
{
     var user = CreateUser("Newton");
     Assert.AreEqual(user.Name, "Newton");
}
于 2012-07-11T12:11:40.980 に答える