0

RhinoMocksとMSpecを使用して、次の合理化された例を考えます。

[Subject(typeof (LocationController))]
public class when_creating_a_location_with_invalid_model : context_for_location_controller
{
    static LocationModel model = new LocationModel();
    static SelectList states = new SelectList(new Dictionary<string,string> {
        { "IN", "Indiana" }, { "NY", "New York" }
    });

    static ActionResult result;

    Establish context = () =>
        {
            LocationModelBuilder.Stub(x =>
                x.Build(Arg<LocationModel>.Is.Equal(model))).Return(model);
        }

    Because of = () => result = subject.Create(model);

    It should_automatically_select_a_state = () => result.Model<LocationModel>()
         .States.ShouldNotBeEmpty();
}

LocationModelBuilder.Build()のスタブ呼び出しから返される前に、モデル変数に含まれるオブジェクトを変更するにはどうすればよいですか?Build()に戻る直前のように割り当てを実行したい。Do()ハンドラーで遊んでみましたが、あきらめました...model.States = states

4

1 に答える 1

2

WhenCalled()を使用してみてください。WhenCalledのパラメーターを使用すると、モックされたメソッドの引数にアクセスでき、戻り値を設定することもできます。

.WhenCalled(m => {
   Model model = (Model) m.Arguments[0];
   model.States = ...;
});
于 2011-02-24T20:28:34.767 に答える