I disabled the comments because of the huge amounts of spam I’m receiving. So if you have any questions you can contact me trough linked-in.
Sorry for the inconvenience.
I disabled the comments because of the huge amounts of spam I’m receiving. So if you have any questions you can contact me trough linked-in.
Sorry for the inconvenience.
In this example I will show how to create a Unit Test with TypeMock.
First I have created some basic dummy classes for the example
public sealed class ServiceFactory { public static ExpireDateService CreateExpireDateService() { ExpireDateService expireDateService = new ExpireDateService(); expireDateService.administration = new SqlAdministration("connectionstring"); return expireDateService; } } /// <summary> /// SqlAdministrion creates connection and managed queries with SQL /// </summary> public class SqlAdministration { private static DateTime LoadParameterPrivate() { return DateTime.Parse("01-01-1980"); } public SqlAdministration(string connectionString) { //Create connection to sql� } public static DateTime LoadParameter(string expireDateType) { //GET expireDate from Database: SqlAdministratie.LoadParameter("expireDateType"); // Load Date from Private method for other mocking examples return LoadParameterPrivate(); } } public class ExpireDateService { public SqlAdministration administration; public DateTime GetDate(string expireDateType) { DateTime expireDate = SqlAdministration.LoadParameter(expireDateType); return expireDate; } } public class CheckDate { public static bool CheckExpireDateBooking() { ExpireDateService expireDateService = ServiceFactory.CreateExpireDateService(); DateTime expireDate = expireDateService.GetDate("expireDateDateFirst"); return DateTime.Parse("01-01-2000") < expireDate; } }
With the following Unit test I will test the code written above. I don't want to change my code or add code for testing purpose. That's where Mocking comes in. With TypeMock I will mock the outcome of specified methods.
The first example is a standard unit test. No Mocking there.
[code language='c#']
///
[TestMethod()]
public void TestMethodWithoutTypeMock()
{
Assert.IsFalse(CheckDate.CheckExpireDateBooking());
}
[/code]
Now I want to mock the method GetDate to return a date specified by me (01-01-2010).
/// <summary> /// Checks the expiredate from database (01-01-1980) /// with a hardcoded date provided by TypeMock (01-01-2010) /// </summary> [Isolated] [TestMethod()] public void TestMethodWithTypeMockIsolate() { //Create a dummy version of the ExpireDateService object to use for Mocking ExpireDateService expireDateService = new ExpireDateService(); expireDateService.administration = new SqlAdministration("dummyConnectionString"); //Return the declared expireDateService when method CreateExpireDateService is called Isolate.WhenCalled(() => ServiceFactory.CreateExpireDateService()) .WillReturn(expireDateService); //Isolate the call to method expireDateService.GetDate with parameter 'expireDateDateFirst' and return 01-01-2010 Isolate.WhenCalled(() => expireDateService.GetDate("expireDateDateFirst")) .WillReturn(DateTime.Parse("01-01-2010")); Assert.IsTrue(CheckDate.CheckExpireDateBooking()); }
For the latest example I wanted to Mock a Private method.
/// <summary> /// Checks the expiredate from database (01-01-1980) /// with a hardcoded date provided by TypeMock on privatemethod(01-01-2010) /// </summary> [Isolated] [TestMethod()] public void TestMethodWithTypeMockIsolatePrivate() { Isolate.NonPublic.WhenCalled(typeof(SqlAdministration), "LoadParameterPrivate") .WillReturn(DateTime.Parse("01-01-2010")); Assert.IsTrue(CheckDate.CheckExpireDateBooking()); }
You can download the source here:
MockingWithTypeMockExampleSource.zip (44.47 kb)
Hope it helps.
Cheers,
Pieter
With the following code you can format a DateTime within a Databind.
For Evident Interactive I was Lead-developer on the hu.nl project. With a team of 5 professionals we build 23 websites in 5 months. All the websites where implemented within one instance of Sitecore CMS.
The websites containing Flash, Silverlight, GoogleMaps, Flick and Youtube.
The project was successfully realized within the deadline.
For this example I will use the default asp.net Membership tables.
Let say: I need to return all users with their roles (comma separated) in one query. After a long time Googling I found the following solution.
select UserName, (select roles.RoleName + ', ' FROM aspnet_Roles roles join aspnet_UsersInRoles usersInRole on roles.RoleId = usersInRole.RoleId WHERE usersInRole.UserId = aspUser.UserId for xml path('')) as roles from aspnet_Users aspUser
Don’t know if this is the best way, but it works.
With common table expressions you can save the results to a temporary result set and use this results set for other queries.
WITH temporaryNamedResultSet AS ( select UserName from aspnet_Users ) select * from temporaryNamedResultSet
When deploying a Silverlight application we ran into problems a WCF web-service, to find out what the problem was I wanted to invoke the method.
Microsoft shipped an application for invoking methods from your Windows PC (WCFtestclient.exe). The following steps explain how to use WCFtestclient.exe.
First startup Visual Studio 2008 Command Prompt. In the command prompt type wcftestclient, the application will startup.
Now we need to add the Service. Click File and Add Service.
Add the URL to your service in the pop-up and pres ok. The service will now add all methods from your service. You can add multiple service URLs.
Double click the method you want to invoke from the tree on the left pane. Enter the values that are required for the Invoke and press Invoke. The method will be invoked.
The right bottom pane will show the response. In my case this shows the Stack-trace because of the error. Normally this will show the web-service response (XML).
With the stack-trace I could located the error and fix it.
Hope this helps,
Pieter