Pure.Krome
Pure.Krome

Reputation: 86987

Need some advice for trying to mock a .NET WebClient or equivalent

I've got some code which downloads some RSS feeds.

I've been using WebClient or Argotic.Syndication.RssFeed libraries.

But these aren't mockable :(

I definately do not want to hit the real RSS feed every time I run the unit test.

Does anyone have any suggestions to what I can do?

Do I need to create an evil wrapper? If so .. suggestions on this?

Upvotes: 22

Views: 12003

Answers (2)

sloth
sloth

Reputation: 101122

I go for creating a wrapper for every external dependency (if it's practical). So, every interaction with the filesystem/a webservice/database should be done through an interface only, which will lead to more testable code.

Another solution of course is (as always) Typemock Isolator.

Upvotes: 18

Darin Dimitrov
Darin Dimitrov

Reputation: 1039080

Does anyone have any suggestions to what I can do?

Abstract the actual HTTP call behind an interface. Then write an implmentation of this interface using WebClient. Now have your main class take this interface as dependency. You could now mock this interface in the unit test and configure your dependency injection framework inject the correct implementation at runtime.

Upvotes: 24

Related Questions