开发者

Mocking webservice calls...sometimes

I am trying to write acceptance testing for an existing app.

I've run into a problem though when calling a web service that tells us if a person is, in short, in the office or not, what hours, and who the backup is.

In most of the tests, actually calling the web service is fine... yes, ideally it shouldn't, but creating inputs and outputs for the many many times this service is called is a HUGE task.

What I'd like to do is have the Mock generate a default result regardless of the input, but it will need to be generated by code based on the parameters as there is temporal data in the call and result.

And, if I choose, to be a开发者_Python百科ble to setup a different result on a few select inputs to the method on a test by test scenario.

Basically, by default, people are in the office. Unless I setup the mock for them not to be.

Can I do that with Moq? And how?

I'm pretty new to writing tests and mocking so if you require more clarification, please ask.


You may be able to do that with Moq or another dynamic Mock, but it doesn't sound like it would be a good idea.

The way you describe your needs it sounds like you want the web service to contain a non-trivial amount of logic - perhaps not as complex logic as the final production web service, but a set of heuristic rules at least. That sounds to me a lot like a Fake instead of a Mock.

In short, a Fake is a lightweight implementation of the dependency.

A Mock, on the other hand, provides more or less pre-canned, static answers to input while verifying whether the input was expected or not. That doesn't sound at all like what you describe.

In short, the best way to achieve what you describe is to write a lightweight version of the web service that act as you describe. If you need to generate some bogus test data, you can consider using AutoFixture.


There is a misunderstood difference bethween mocks and stubs [Martin Forler: Mock Aren't Stubs (http://martinfowler.com/articles/mocksArentStubs.html]. Basically the mock objects serves as the objects with the mechanism that allows you to verify that the method tested during some testing scenario (mostly the Unit tests) is using the object correctly (ie. verify that the tested method called the mock object's methods in correct order, set the parameters and accessed the property three times ...). The mock serves for purpose of testing the method within the unit test whether it is using another objects that are beyond it's boundaries correctly. On the other hand the stubs are simulating some behavior (this is what I think you seek).


You could try the web based mocking utility from sourceForge. The application allows to configure selected response based on a particula input tag value.

http://sourceforge.net/projects/easymocker

Web Service Mocker is an easy to use, completely web based SOAP web service mocking utility. This utility is found very useful in a SOA development environment during unit test, component integration test and non-functional requirement testing.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜