簡體   English   中英

Rhino Mocks的意思是“需要返回值還是拋出異常”?

[英]What does Rhino Mocks mean by “requires a return value or an exception to throw”?

模擬對WCF服務的調用時,我收到以下錯誤:

方法'ICustomerEntities.GetCustomerFromPhoneNumber(“01234123123”);' 需要返回值或拋出異常。

我用Google搜索並在這里搜索 - 我能找到的是我需要重新訂購各種電話等,但這在我的情況下似乎沒有意義嗎? 也許有人可以向我指出它確實存在嗎?

我的測試設置看起來像這樣

_entities = MockRepository.GenerateStrictMock<ICustomerEntities>();

並且測試方法在第三行失敗,設置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);
}

記住一個模擬對象只是一個模擬。 根本沒有實現,所以如果mock需要從函數返回一個值,除非你告訴它,否則它無法知道返回什么。

我假設你的GetCustomerFromPhoneNumber()返回一個Customer對象或id,所以你需要告訴Rhino要返回什么:

我從來沒有使用過Rhino,但希望即使語法不正確,這也會指向正確的方向。

var test = MockRepository.GenerateMock<ICustomerEntities>(_factory);
test.Stub(ent => ent.GetCustomerFromPhoneNumber("01234123123")).Return(new Customer());

你的_entities對象是Mock,所以它沒有實現。 你必須指定它的行為和返回值。 要存根返回值您必須執行以下操作:

_entities.Stub(x => x.GetCustomerFromPhoneNumber(Arg<string>.Is.Anything)).Returns(*here specify what do You want to return*);

對我來說,以這種方式進行測試並不是有意義的,但這是另一種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM