簡體   English   中英

犀牛Mo子為什么我不能模擬財產?

[英]Rhino Mocks Why Can't I Mock a Property?

我花了幾天時間編寫測試,然后不得不在最后一刻添加一個屬性,以解決我在編寫測試時發現的問題之一。 自添加該屬性以來,我一直在嘗試使模擬框架起作用。

這是我的代碼。

using (_mockRepository.Record())
        {
            _mockBattleDao.Expect(b => b.GetUnprocessedActions(gameId, round)).Return(roundResolvingItems);
            _mockDao.Expect(b => b.GetMidGameCharacterStats(gameId, round)).Return(midGameCharacterStats);
            _mockBattleDao.Expect(b => b.GetAmbientCharacterBuffs(_mockTiersHelper, gameId, round)).Return(new List<Buff>());
            _mockBattleDao.Expect(b => b.GetActiveTriggerBuffs(_mockTiersHelper, gameId, round)).Return(triggerBuffs);
            _mockBattleDao.Expect(b => b.GetActiveAmbientBuffs(_mockTiersHelper, gameId, round)).Return(new List<Buff>());
            _mockDao.Expect(b => b.GetGame(gameId)).Return(new Common.Entities.Game { CompletionType = "single party down" });
            _mockDao.Expect(b => b.GetAbilityById(1337)).Return(ability).Repeat.Times(3);
            _mockDao.Expect(b => b.GetAbilityById(1727)).Return(attackAbility).Repeat.Times(4);
            _mockTiersHelper.Expect(b => b.AddStatistic(Arg<StatAndCount>.Is.Anything)).Repeat.Times(3);
            SetupResult.For(_mockTiersHelper.Round).Return(round);
        }

        TiersCalculationContainer container;

        using (_mockRepository.Playback())
        {
            container = engine.ProcessTiers();
        }

我知道AAA語法是新的熱點,但是我有一個完整的大型測試,但是為此,我不想返回並重寫。

當代碼執行到達使用“ Playback”的結尾“}”時,出現以下異常:

ExpectationViolationException

TiersCalculationContainer.get_Round(); 預期#1,實際#0。

在調試測試時,正確讀取了屬性“ Round”並破壞了我為其模擬的值,因此我知道它被調用了。

我在網上找不到有關此的任何信息。 在Rhino模擬中,大約有100種模擬屬性的方法。 他們都沒有工作,這真令人沮喪。

我也嘗試過模擬所有這些方式(還有更多)

_mockTiersHelper.Expect(b => b.Round).Return(round);
Expect.Call(_mockTiersHelper.Round).PropertyBehavior();
_mockTiersHelper.Round = round;

對一個測試有很多期望,我建議分別測試每個對象的行為,然后僅測試在集成點是否正確調用了它們。

除此之外,我認為您的問題是邏輯問題,而不是語法問題,如果您要根據文檔設置模擬並獲得意外行為,則這是代碼或測試中的錯誤。

我認為答案可能是錯誤。 我拋棄了犀牛,回到了起訂量。 10分鍾,我就開始跑步了。 現在我的測試通過了。 謝謝你,定單!

暫無
暫無

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

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