[英]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.