私はコードがこの問題を私の貧弱なタイトルよりも良く説明すると思います。同じオブジェクトをスタブするとRhinoMocksが失敗しますか?
_httpContextBase
はHttpContextBase
ですが、私はそれが重要ではないと思います。 _httpCookiecollection
はちょうどHttpCookieCollection
//Works fine
_httpContextBase.Stub(c => c.Response.Cookies).Return(_httpCookieCollection);
//Fails after attempting to stub the second line. "Object reference not set to an instance of an object". First line passes fine.
_httpContextBase.Stub(c => c.Response.Cookies).Return(_httpCookieCollection);
_httpContextBase.Stub(c => c.Request.Cookies).Return(_httpCookieCollection);
//Work around
var responseBaseMock = MockRepository.GenerateMock<HttpResponseBase>();
responseBaseMock.Stub(r => r.Cookies).Return(_httpCookieCollection);
_httpContextBase.Stub(c => c.Response).Return(responseBaseMock);
var requestBaseMock = MockRepository.GenerateMock<HttpRequestBase>();
requestBaseMock.Stub(r => r.Cookies).Return(_httpCookieCollection);
_httpContextBase.Stub(c => c.Request).Return(requestBaseMock);
は、上記のテストは、それぞれ独自の方法であると想像されます。各コメントは、その下のコードが実行されたときに何が起こるかを説明します。
最初の項目は機能し、2番目の項目は失敗し、3番目の項目は私の回避策です。私が知りたがっているのは、なぜそれを理解しているように見えないので、2番目のアイテムが失敗するのかです。項目2のための
スタックトレース(ライン1と2が反転している場合でも、同じスタックトレース)
System.NullReferenceException : Object reference not set to an instance of an object.
at Api.Tests.Client.CookieTests.<>c.<Test>b__12_1(HttpContextBase c) in Api.Tests\Client\CookieTests.cs:line 113
at Rhino.Mocks.RhinoMocksExtensions.Expect[T,R](T mock, Function`2 action)
at Rhino.Mocks.RhinoMocksExtensions.Stub[T,R](T mock, Function`2 action)
at .Api.Tests.Client.CookieTests.Test() in .Api.Tests\Client\CookieTests.cs:line 113
この質問にWindsorを使用することはありませんが、代わりにRhinoMocksを使用して質問に間違いを付けてタグ付けしましたか?また、例外のスタックトレースを含めることもお勧めします。 –
@JonathonRossiああ...確かにしました。ありがとうジョナトン! – Questioning