我使用commonlibrary(http://commonlibrarynet.codeplex.com/)的驗證碼類。我的代碼工作和一切,但現在我試圖編寫單元測試。FakeItEasy和FluentValidation從commonlibnet僞造的驗證碼
我的驗證規則是:
RuleFor(x => x.CaptchaUserInput)
.NotEmpty()
.Must((x, captchaUserInput) => Captcha.IsCorrect(captchaUserInput, x.CaptchaGeneratedText))
.WithMessage("Invalid captcha code");
在我設立的代碼我試圖做到以下幾點:
A.CallTo(() => Captcha.IsCorrect()).Returns(true);
,但我得到了以下錯誤消息:
SetUp : FakeItEasy.Configuration.FakeConfigurationException :
The current proxy generator can not intercept the specified method for the following reason:
- Static methods can not be intercepted.
at FakeItEasy.Configuration.DefaultInterceptionAsserter.AssertThatMethodCanBeInterceptedOnInstance(Metho dInfo method, Object callTarget)
at FakeItEasy.Configuration.FakeConfigurationManager.CallTo(Expression`1 callSpecification)
at ProdMaster.Hosts.Web.Tests.Unit.Controllers.AccountControllerTests.SetUp() in AccountControllerTests.cs: line 44
所以真正的問題是如何使用FakeItEasy僞造靜態方法。
TIA,
大衛
謝謝你在這裏和通過電子郵件的答案。非常感謝。我並沒有試圖嘲笑Captcha控制,而是扼殺了它。從Roy Osherove關於單元測試的書中我已經閱讀和理解的內容可以看出,這是我應該做的,因爲它是一種外部依賴性,不應該使我的測試失敗。無論如何,我相信我已經理解了你的觀點,並且會嘗試調整提供給Captcha控件的代碼。再次感謝你。大衛 – DavidS 2011-04-24 12:10:34