14

WCFサービスへの呼び出しをモックすると、次のエラーが発生します。

メソッド'ICustomerEntities.GetCustomerFromPhoneNumber( "01234123123");' スローするには戻り値または例外が必要です。

私はこれをグーグルで検索し、ここで検索しました-私が見つけることができるのは、さまざまな呼び出しなどを並べ替える必要があることだけですが、それは私の状況では意味がないようですか?おそらく誰かが私にそれが実際にそうしていると指摘することができますか?

私のテストセットアップは次のようになります

_entities = MockRepository.GenerateStrictMock<ICustomerEntities>();

そして、テストメソッドは3行目で失敗します。result2

_entities.Expect(ip => ip.GetCustomerFromPhoneNumber("01234123123"));
var test = MockRepository.GenerateMock<ICustomerEntities>(_factory);
var result2 = _entities.GetCustomerFromPhoneNumber("01234123123");
var result = test.GetAllCustomersWithAGivenPhoneNumber("01234123123");
Assert.AreEqual(result,result2);

元の呼び出しはこれをモックしようとしています(と呼ばれるメソッドでGetAllCustomersWithAGivenPhoneNumber):

using (var entities = _factory.CreateEntities())
{
    var customer = entities.GetCustomerFromPhoneNumber(telephoneNumber);
}
4

2 に答える 2

15

モック化されたオブジェクトは、まさにモックであることを忘れないでください。実装はまったくないため、モックが関数から値を返す必要がある場合、指定しない限り、何を返すかを知る方法がありません。

GetCustomerFromPhoneNumber() が Customer オブジェクトまたは ID を返すと想定しているため、何を返すかを Rhino に指示する必要があります。

私は Rhino を使用したことがありませんが、構文が正しくない場合でも、これが正しい方向を示してくれることを願っています。

var test = MockRepository.GenerateMock<ICustomerEntities>(_factory);
test.Stub(ent => ent.GetCustomerFromPhoneNumber("01234123123")).Return(new Customer());
于 2012-06-12T09:53:14.970 に答える