Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

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?

like image 250
Pure.Krome Avatar asked Jun 19 '12 06:06

Pure.Krome


Video Answer


2 Answers

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.

like image 92
Darin Dimitrov Avatar answered Sep 23 '22 14:09

Darin Dimitrov


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.

like image 33
sloth Avatar answered Sep 20 '22 14:09

sloth