In my previous post I showed you how I used ServiceStack to do the integration tests with Easyhttp.
I also used a different port for each test and thus a different instance of ServiceStack for each of these tests.
Of course The Boss was not happy with this.
So I went for a look on how to do this the better way.
And I found this on Stackoverflow. So thanks to Jason Watts for helping me along.
So the ServiceStackHost.cs file is still the same as before. But I created this class.
- using Machine.Specifications;
- namespace EasyHttp.Specs.Helpers
- {
- public class DataSpecificationBase : IAssemblyContext
- {
- private ServiceStackHost _appHost;
- private int _port;
- void IAssemblyContext.OnAssemblyComplete()
- {
- _appHost.Dispose();
- }
- void IAssemblyContext.OnAssemblyStart()
- {
- _port = 16000;
- var listeningOn = "http://localhost:" + _port + "/";
- _appHost = new ServiceStackHost();
- _appHost.Init();
- _appHost.Start(listeningOn);
- }
- }
- }
And I removed the apphost field and init and teardwon code from the tests. So a test now looks like this.
- [Subject("HttpClient")]
- public class when_making_a_GET_request_with_valid_uri
- {
- Establish context = () =>
- {
- httpClient = new HttpClient();
- };
- Because of = () =>
- {
- httpResponse = httpClient.Get("http://localhost:16000");
- };
- It should_return_body_with_rawtext =
- () => httpResponse.RawText.ShouldNotBeEmpty();
- static HttpClient httpClient;
- static HttpResponse httpResponse;
- }
It has no clue about apphost.
And now the Boss is happy.
And you can find all the code on Github.
So now I know a bit more about mspec, servicestack and easyhttp. One is never to old to learn.





LTD Social Sitings
Note: Watch for social icons on posts by your favorite authors to follow their postings on these and other social sites.