HttpContext Test
Test: Can I mock HttpContext, set a value, and get the value, in this case Error 1: ErrorLoger target;
2: private const string TestError = "Test Error";
3: public MockILogger MockLogger;
4:
5: [SetUp]
6: public void Setup()
7: {
8: target = new ErrorLoger();
9: HttpContext mockContext = Mock.Create<HttpContext>();
10: Mock.Arrange(() => mockContext.Error).Returns(new Exception(TestError));
11: target.Context = mockContext;
12: MockLogger = new MockILogger();
13: target.LoggerInterface = MockLogger;
14: }
15:
16: [Test]
17: public void LogError_SetsLoggerMessageEqualToContextErrorMessage_Test()
18: {
19: target.LogError();
20:
21: Assert.AreEqual(TestError,MockLogger.Message);
22: }
Result: Just Mock crashes when it tries to mock HttpContext.
SqlConnection Test
Test: Can I mock a SqlConnection and open a connection with out really opening a connection.1: private DataRequest target;
2: private bool SqlConnectionOpened;
3:
4: public void SqlConnectionOpenedCalled()
5: {
6: SqlConnectionOpened = true;
7: }
8:
9: [SetUp]
10: public void Setup()
11: {
12: SqlConnectionOpened = false;
13: target = new DataRequest();
14:
15: var mockSqlConnection = Mock.Create<SqlConnection>();
16: Mock.Arrange(() => mockSqlConnection.Open()).DoInstead(SqlConnectionOpenedCalled);
17: target.Connection = mockSqlConnection;
18: }
19:
20: [Test]
21: public void GetUserList_Test()
22: {
23: List<string> actual = target.GetUserList();
24: Assert.AreEqual(true, SqlConnectionOpened);
25: }
Result: Just Mock was able to create the mock without crashing but when I try to set alternate functionality to the Open method, recording that I called Open, it crashes saying invalid connection string. My question is why does it care about a connection string when I’m setting behavior, unless I’m missing how to set this up.
Conclusion
As you can see in the examples the syntax is nice and simple, unfortunately Just Mock failed to pass either of my test and to be honest I’m not surprised, it’s in early beta and I tested it against the hardest problems I can think of to solve, something that none of the other mocking frameworks I have looked at even attempt.What really impressed me was that while working on this I tweeted about having problems and within a couple of hours @hkosev (Hristo Kosev) from Telerik, who isn’t one of my followers, tweeted me asking what I was doing to get the errors and asked me if I would mind sending him the source for what I was doing so they could solve the problem, without even asking for help, very nice.
As always here is the link to my source code.
1 comment:
Hi Richard,
Thanks a lot for the detailed blog post and for taking your time to evaluate JustMock.
We managed to reproduce these issues locally and hopefully both problems will be fixed in the next build (to be released next week).
I'll let you know when the build is available.
Post a Comment