Today we are marching towards our login screen which will be the first of functionality restore for the .NET Core The Globe In My BucketList Application (TGIMBA) upgrade.
It kinda bugged me how I was not able to easily inject items to be tested. The JSTest.NET github page says it supports 2-3 differet mocking libraries. However, it also looks like this repository is unmaintained and I was not able to easily find examples on how to set up the mocks. So, based on my analysis of the project code, I am going set up my own mocking library (of sorts…more like a manual mock for each method I care to test).
There are two methods I want to test in Global.js – Init() and Load(divId).
If you remember from a few posts back, Init() is called HomeController.cs -> HtmlVanillaJsIndex() -> HtmlVanillaJsIndex.cshtml.
I started with Load(divId) first since Init() was just a wrapper call to Load(divId). Using the documentation supplied with JSTest.net (reference #1), I used the AppendBlock(arg) to append my mock. This manual mock places the expected dependencies for the normal load action – document.getElementById(id) returns the target div and ServerCall() simplify verifies that it was called with the expected arguments.
For Init(), I realized there was a lot of duplicate code. So, I simplified it to this for both tests.
I removed common functionality related to InitTests.cs to private methods at the bottom.
The evaluation of true in this case I moved to BaseTest.cs.
I add additional tests for the non happy path routes.
Next post will be the login screen!