का उपयोग करके अपवादों के परीक्षण के लिए परीक्षण कैसे करें मैं अपने यूनिट परीक्षणों के लिए xUnit, SubSpec और FakeItEasy का उपयोग कर रहा हूं। मैं अब तक इस तरह का कुछ सकारात्मक इकाई परीक्षण बना लिया है:xUnit, SubSpec और FakeItEasy
"Given a Options presenter"
.Context(() =>
presenter = new OptionsPresenter(view,
A<IOptionsModel>.Ignored,
service));
"with the Initialize method called to retrieve the option values"
.Do(() =>
presenter.Initialize());
"expect the view not to be null"
.Observation(() =>
Assert.NotNull(view));
"expect the view AutoSave property to be true"
.Observation(() => Assert.True(view.AutoSave));
लेकिन अब मैं कुछ नकारात्मक इकाई परीक्षण लिखने और जांच करने के लिए है कि कुछ पद्धतियों को बुलाया नहीं मिलता चाहते हैं, और एक अपवाद
फेंक दिया जाता हैउदाहरण
"Given a Options presenter"
.Context(() =>
presenter = new OptionsPresenter(view,
A<IOptionsModel>.Ignored,
service));
"with the Save method called to save the option values"
.Do(() =>
presenter.Save());
"expect an ValidationException to be thrown"
.Observation(() =>
// TODO
);
"expect an service.SaveOptions method not to be called"
.Observation(() =>
// TODO
);
मैं देख सकता हूँ FakeItEasy एक MustNotHaveHappened विस्तार विधि है, और XUnit एक Assert.Throws विधि है।
लेकिन मैं इसे सब एक साथ कैसे रखूं?
अपवाद जिसे मैं परीक्षण करना चाहता हूं, तब सहेजना चाहिए जब सहेजें विधि कहा जाता है। तो मुझे लगता है कि मुझे एक आर्ट लपेटना चाहिए। प्रस्तुतकर्ता के चारों ओर तीर विधि। सेव() विधि कॉल, लेकिन मैंने प्रस्तुति को सोचा था। सेव विधि को .o (() => ...
में कॉल किया जाना चाहिए आपको सलाह कृपया अगर मेरी इकाई परीक्षण नीचे या कुछ और की तरह दिखना चाहिए?
"Given a Options presenter"
.Context(() =>
presenter = new OptionsPresenter(view,
model,
service));
"expect the Presenter.Save call to throw an Exception"
.Observation(() =>
Assert.Throws<FluentValidation.ValidationException>(() => presenter.Save()));
"expect the Service.SaveOptions method not to be called"
.Observation(() =>
A.CallTo(() => service.SaveOptions(A<IOptionsModel>.Ignored)).MustNotHaveHappened());
बहुत धन्यवाद
सुनिश्चित नहीं हैं कि इस मदद कर सकता है, लेकिन आप इसके अलावा इन कर रहे हैं उदाहरण के लिए https://bitbucket.org/johannesrudolph/subspec/src/a35fcc8ae1f6/test/SubSpec.Tests/ContextSetupTeardownBehavior.cs SubSpec पर दस्तावेज़ीकरण की जाँच की थी बीडीडी/विशिष्टता आधारित परीक्षण यूनिट टेस्ट नहीं। यदि आप टैग बीडीडी शामिल करते हैं तो आपको बेहतर दर्शक मिल सकते हैं। – Spock