Hi, how can I verify a protected method call using DI? when I use var mock=new Mock and try setup the protected with mock.Protected().Setup("MyMethod") I get a error: "No protected method found", but the method exists and it is virtual but if I use var mock=new Mock it works but this way is not acceptable for my project, you know
My day today: 1. Tried to understand Mocking over the Internet: > 6 hours 😟 2. Took a nap: 30mins 😴 3. Finally learnt through this video: 20mins 🙂 4. Subscribed:1sec 🤘 Thank you Nick, please go for advance xUnit and Moq.
I watched this first before knowing anything about mocking but I didn't understand much. I then read a beginner friendly article that gave a very simple introduction and then later came back to watch this video and it all makes sense now. Your examples are helpful because they are real world which is what I need for my project.
Yeah I got that feedback quite a bit. So the assumption of the video is that the viewer already understands the concept of mocking, in order to keep the video length smaller, but it might be harder for complete beginners.
I spent hours figuring out why I was getting NullReferenceException as I just started learning and using moq. Your video covered the exact scenario. Thanks, mate
Nice video. thanks. Small point: some viewers might be tempted to put the creation of the Mock instances at the class fixture level (e.g. in an IClassFixture for xUnit). Don’t do that because the Mock contains state information (which Setups exist, what has been called, what was Verified), so a new Mock instance should be created for each test case.
Thank you Nick, I always had hard time with mocking test cases but finally I was able to successfully mock and fix the test cases which were having problem. Thanks a lot!!
1+ to naming convention on class name. Very handy. I haven't used Rider (in fact didn't even know about it) but I use Resharper in VS and one very handy feature is to see the list of all the files by pressing Ctrl + N. Now when you name a test file as a convention of Object + Test, it becomes very easy to find the tests. If I have a TradeBookingViewModel class, I can have a TradeBookingViewModelTests and just like that, when I type TBVM in Ctrl+N window, it will pop both classes showing actual class and the tests for that class.
Great material, thanks Nick for putting this together. Appreciate it! Looking forward to see advanced videos especially eliminating the external dependencies like database, network, api calls etc. with some mocked data. You have got great content on your channel, sub'ed. Will spend some time, thank you.
Very nice job again, sensei! But I hope people dont start returning null as a result. Null should mean "I dont know" if anything. You already know this Nick since you made videos about better ways. Just putting it out for the people. To many use null as a valid value.
Regarding the log information, what if you use dependency injection and sent the logger in as Ilogger Logger? do you mock it then? how could you compare it then like at 19:12
Hey Nick, amazing video. I have one question, If my purpose is testing GetUserById and I create a mock which returns a value I'm deliberately giving to it, how does it benefit my test? I won't know if my actual service works, I know that the mock works. Am I missing something?
I would say no, I have asked this question repeatedly to people who promote it and the only benefit is testing exceptions/testing for nulls. This will not test data type matching for parameters, missing parameters being passed to stored procedures, columns coming back lining up (ie assigning them to the actual class property coming back and referencing it), or that stored procedure names are correct. As far as I am concerned this a waste of time and repos really need integration testing to a test db.
Agreed. Use mocks for the things around the db calls, and actually test bd calls with some tool like postman or some sql program like sql server management studio or whatever on test bd's. I've seen real problems with calling systems that only use mocks for testing db calls. Often they don't work and real people are affected by it.
Along the same words as the first 2 replies I'd treat db calls like any other external system. Make the mock return reasonable data that you would legit see (or portions of it). knowing what your external service is going to return is part of the leg work of Proof of concept projects or having a integration test project that only runs locally to test these data structures. Just know that those tests are usually brittle and break easily and are hard to understand usually.
Greetings from 39°38'N / 19°55'E. In the GET method (around 11:30 - line 28) you provide the expected response as a CustomerDto object. Later in the Assert (line 41), the customerId is compared with the CustomerDto's Id. Since the call to the service is fake and no 'real' data is fetched, what is the point of comparing two things that are by definition equal? Unless this test is done only to increase the code coverage, can you please give us a good reason for testing the GET method?
Who is Theodor Ntakouris anyway? You should tell us more Nick? 😊Otherwise thanks for awesome video! It really helped me to realise how can I use this unit/integration tests in real applications.
This is a great video and answered a lot of questions.. but i still have one which may be a stupid question! :).... If a method is being setup as shown and you specify what it shall return, the underlying implementation is still not actually being called right? it seems like you're telling it what to return so the test will always pass.... that is unless of course the actual implementation is being called somehow.. but I don't see that... Could you clarify this confusion? Thanks!
4 года назад+1
Congratulations for you video, I was looking for this project in your git hub repository but I didn't found it . I would like to check it .
14:41 ".Returns(() => null);" - I built this example using non-async. I still got an error for this: ".Returns(null);". Here is the error: "CS0121 The call is ambiguous between... 'IReturns.Returns(TResult)' and 'IReturns.Returns(Func)'". Using ".Returns((CustomerDto)null);" also resolves this error.
Nick: Any specific reason to pick the Xunit over NUnit? Loving your videos. Please keep posting new stuff. Your playlist is a treasure trove of complex concepts made simple. Already a subscriber. :)
I just had a talk at work on this very subject. Even though I used to contribute to NUnit, I'm here to tell you that it really doesn't matter between xUnit, NUnit, or MsTest v2. There is very little that you can't do in one over the other. If you refer to Nick's video on Nuget packages you should use he also mentions getting FluentAssertions which makes the argument of you prefer the way assertions are written in one framework over another. We went with xUnit at my current client because it keeps with the mentality of writing helper classes in your test projects that you can pass into the ctor just like you would with production code.
Hi, how can I verify a protected method call using DI? when I use var mock=new Mock and try setup the protected with mock.Protected().Setup("MyMethod") I get a error: "No protected method found", but the method exists and it is virtual but if I use var mock=new Mock it works but this way is not acceptable for my project, you know
@@grigorecosmin when using ReturnAsync it says only assignment, call, increment, decrement, await and new object expressions can be used as a statement
I totally agree with you as well. I am personally using NSubstitude and the next video is about that. I needed to show how NSub improves upon Moq so I had to show Moq first before I show NSub.
Hey, big thanks for the video:) now all is more understandable, I just starting playing with unit tests.. I have one question, can you tell me how you have aaa autocomplete it (Arrange Act Assert) ?:) thanks PS. For right now I make it snippet file and manually I'm adding this into visual studio and it's working fine but maybe is some already nuget with this function:)?
@@nickchapsas aa ok:), the same day I tried to find an extension to visual studio that would have such functionality, but unfortunately I did not find anything, so I decided to see if it is hard to create such an extension with such functionality and I sat up all night and managed to create such a thing, it now generates me AAA (Arrange, Act, Assert) and test methods that contain it, if you want it you can find in the marketplace under the name AAASnippet including documentation ;d. It's not some mega awesome, it's my first, but it does what it's supposed to do :) "AAASnippet"
Hi Nick Hope you're doing well. I watched your all xunit video I'm struggling for writing unit test using xunit framework. One for the method is inserting records into SQL db. I have written unit test case for this method but in the end cmd. executenonquery throwing exception like below "BeginExecuteNonQuery requires an open and available connection. The connection currently state is closed" I believe I need to mock sqlconnection. Any suggestions. Appreciated
good video dear sir.but i have a problem,i work with automapper and the controller return null.it seems that the autommaper should be inciated only one time.can yo help me with that
I really don’t understand copy-pasting the exception message inbetween the test and the method implementation. This is one of the things about unit testing which does not sound quite right to me. I don’t know if there is a better way, though.
have you guys ever encountered problems with visibility to MOQ? does not work for me to .Setup(), whereas it works fine with for the rest of the Test but not for setting up MOQ.
not personally. The only time I've done this is when I've mocked HttpClient (well the handler that gets passed into the ctor). It only has a protected member that you have to override. There is a contribs nuget package to help with this but you can also define an interface and use the .Internal().As() or .Protected().As(). I find this easier to deal with as long as I know the hidden signature won't change.
Quick Question: Why are you using constructor in test class? Not sure which testing framework you are using but I think it should have a Setup attribute or something similar that you can decorate your method which will make the framework run the method every time a new test is run. Wondering why you decided to use constructor instead? Update: figured it out. you are using XUnit and here is what they say [SetUp] [TestInitialize] Constructor We believe that use of [SetUp] is generally bad. However, you can implement a parameterless constructor as a direct replacement. See Note 2 Cool.
I got confused on the Repository and the Service. Why does both of them have the same exact methods? Like, the repository has GetAllAsync(), and the service has GetAllAsync() as well, but the service uses the repository's method. Shouldn't we just use the repository in the controller? I'm new to things like this, and I just use an IMyRepository in my controllers.
it's not uncommen for the service to have multiple repositories or other external business rules and logic. His example helped to simplify things. So as far as business is concerned you're just getting customer data but that might include addresses and images and html.. You could be testing flow or how it reacts to systems being down. Hope this helps
@@zerosandones7547 it might just be naming if you are referring to the controller in MVC pattern then you are right. If you mean controller as in entry point for web API then no. This is entry point and should deal with validation of the request and returning appropriate response based on your service output.
I didn't watch the whole video but when creating your mocks, you should specify MockBehavior.Strict or whatever it is to make sure you are not calling something you didn't intend.
great video, sorry I'm having trouble locating the source code for the project demo'd. I do not see a direct reference, nor indirectly from the git hub link. please add it. TYVM
I don't know why this question doesn't have a response (or why I'm here! Thought process was, "are people still using Moq?"). Anyway for anyone else that stumbles across it. Those attributes are not part of Moq they are the testing framework, [Fact] is xUnit, [Test] possibly nUnit, [TestMethod] for example is MSTest. Hope that helps somebody.
Unfortunately the behavior with ILogger and extension methods (LogDebug, LogInformation) is not supported. You have to write the plain Log method which is quite big and almost impractical. I suspect that's why you wrote a "generic ILoggingService" and not the standard ILogger.
Hi Nick, amazing video as usual. I tried to add the shortcut aaa to generate my fact method, but I failed miserably. I have successfully added it to the LiveTemplates, but teh shortcut is not working in the Unitest context, not sure how to configure that :-/ Which brings me to a request: can you have a video to show your favorite custom templates, and maybe other Rider tricks as well as how to set that up
Are you looking for more training? Check out my "From Zero to Hero: Unit testing in C#" course: nickchapsas.com/p/from-zero-to-hero-unit-testing-in-c
Hi, how can I verify a protected method call using DI?
when I use var mock=new Mock
and try setup the protected with mock.Protected().Setup("MyMethod") I get a error: "No protected method found", but the method exists and it is virtual
but if I use var mock=new Mock it works but this way is not acceptable for my project, you know
4 years late in learning this lol. Man, you have gotten so much better at presenting in these 4 years. Great job
My day today:
1. Tried to understand Mocking over the Internet: > 6 hours 😟
2. Took a nap: 30mins 😴
3. Finally learnt through this video: 20mins 🙂
4. Subscribed:1sec 🤘
Thank you Nick, please go for advance xUnit and Moq.
That is so great to hear Ranvir! Glad I could help 😃
same here!!!! thanks Nick!!
Yeah this guy is a good teacher.
Same here
Hey same here. Now I understood. Can’t express my happiness. A big relief. Thanks
I was literally tired watching videos on Nunit but this is "THE" best explanation !! hats off to you efforts.. !!
An advanced video would be awesome, Thanks Nick!
I watched this first before knowing anything about mocking but I didn't understand much. I then read a beginner friendly article that gave a very simple introduction and then later came back to watch this video and it all makes sense now. Your examples are helpful because they are real world which is what I need for my project.
Yeah I got that feedback quite a bit. So the assumption of the video is that the viewer already understands the concept of mocking, in order to keep the video length smaller, but it might be harder for complete beginners.
I spent hours figuring out why I was getting NullReferenceException as I just started learning and using moq. Your video covered the exact scenario. Thanks, mate
Omg, bro. I had tried to understand it with lots of mistakes for 4 hours, but you just explained it in 20 minutes in a simple way. Thanks a lot!)
I was like nah imma head out from testing part and then I found this video. 30 mins and all good. thnx mate.
Nice video. thanks.
Small point: some viewers might be tempted to put the creation of the Mock instances at the class fixture level (e.g. in an IClassFixture for xUnit). Don’t do that because the Mock contains state information (which Setups exist, what has been called, what was Verified), so a new Mock instance should be created for each test case.
Loving these videos. Short enough and in sufficient detail to grasp the basics quickly, without having to devote hours at a time.
Thank you Nick, I always had hard time with mocking test cases but finally I was able to successfully mock and fix the test cases which were having problem. Thanks a lot!!
You're just the best, you can explain anything in a perfectly understandable way.
Very well explained with real examples. Awesome!
1+ to naming convention on class name. Very handy. I haven't used Rider (in fact didn't even know about it) but I use Resharper in VS and one very handy feature is to see the list of all the files by pressing Ctrl + N. Now when you name a test file as a convention of Object + Test, it becomes very easy to find the tests. If I have a TradeBookingViewModel class, I can have a TradeBookingViewModelTests and just like that, when I type TBVM in Ctrl+N window, it will pop both classes showing actual class and the tests for that class.
Thanks for the video Nick, it was just what i was looking for :)
Thank you, Nick. I tried both and love Moq better. I'm sticking with it.
Great video, as always. Straight to the point, very clear and thorough. Thanks Nick!
Great material, thanks Nick for putting this together. Appreciate it! Looking forward to see advanced videos especially eliminating the external dependencies like database, network, api calls etc. with some mocked data. You have got great content on your channel, sub'ed. Will spend some time, thank you.
this video saves me
!
very easy to understand on the Moq usage
thanks Nick!
Thanks Nick for all your videos!
Good video, but better to use conrete value or Is instead of IsAny
Great video nick! Helped a lot.
Thanks for sharing, yes an advanced is indeed needed.
Thank you for the video!
Great video, very helpful!
Very nice explanation Nick.. Keep it up...!!
Thank you so much! You helped me a lot!
Excellent example and you have a great pronunciation for a mexican, thank you very much ... subscribed!
I’m Greek
Great demo!!!
Thank you for this useful video
Awesome !! Great video to understand, how to write test case
Well explained
very good explanation..thanks!!
excellent tutorial
Very nice job again, sensei!
But I hope people dont start returning null as a result. Null should mean "I dont know" if anything. You already know this Nick since you made videos about better ways. Just putting it out for the people. To many use null as a valid value.
Fantastic video! Thanks
Very good explanation
:)
Regarding the log information, what if you use dependency injection and sent the logger in as Ilogger Logger? do you mock it then? how could you compare it then like at 19:12
thanks for the video, I love it.
Thank you so much, very informative and well explained :-)
Nice. Thank for sharing
Yes, we want advanced :).
that was grate, thanks
Great work!
hallo Nick, Thanks for the tutorial,
Hey Nick, amazing video.
I have one question,
If my purpose is testing GetUserById and I create a mock which returns a value I'm deliberately giving to it, how does it benefit my test?
I won't know if my actual service works, I know that the mock works.
Am I missing something?
I would say no, I have asked this question repeatedly to people who promote it and the only benefit is testing exceptions/testing for nulls. This will not test data type matching for parameters, missing parameters being passed to stored procedures, columns coming back lining up (ie assigning them to the actual class property coming back and referencing it), or that stored procedure names are correct. As far as I am concerned this a waste of time and repos really need integration testing to a test db.
Agreed. Use mocks for the things around the db calls, and actually test bd calls with some tool like postman or some sql program like sql server management studio or whatever on test bd's. I've seen real problems with calling systems that only use mocks for testing db calls. Often they don't work and real people are affected by it.
Along the same words as the first 2 replies I'd treat db calls like any other external system. Make the mock return reasonable data that you would legit see (or portions of it). knowing what your external service is going to return is part of the leg work of Proof of concept projects or having a integration test project that only runs locally to test these data structures. Just know that those tests are usually brittle and break easily and are hard to understand usually.
Thanks Nick
Greetings from 39°38'N / 19°55'E. In the GET method (around 11:30 - line 28) you provide the expected response as a CustomerDto object. Later in the Assert (line 41), the customerId is compared with the CustomerDto's Id. Since the call to the service is fake and no 'real' data is fetched, what is the point of comparing two things that are by definition equal? Unless this test is done only to increase the code coverage, can you please give us a good reason for testing the GET method?
Who is Theodor Ntakouris anyway? You should tell us more Nick? 😊Otherwise thanks for awesome video! It really helped me to realise how can I use this unit/integration tests in real applications.
Excellent
Thanks 👍
great video
This is a great video and answered a lot of questions.. but i still have one which may be a stupid question! :)....
If a method is being setup as shown and you specify what it shall return, the underlying implementation is still not actually being called right? it seems like you're telling it what to return so the test will always pass.... that is unless of course the actual implementation is being called somehow.. but I don't see that...
Could you clarify this confusion? Thanks!
Congratulations for you video, I was looking for this project in your git hub repository but I didn't found it . I would like to check it .
Thx for this toturial! I have a question, how do I see the code coverage? I don't have the right-click option to "View Code Coverage"
14:41 ".Returns(() => null);" - I built this example using non-async. I still got an error for this: ".Returns(null);". Here is the error: "CS0121 The call is ambiguous between... 'IReturns.Returns(TResult)' and 'IReturns.Returns(Func)'". Using ".Returns((CustomerDto)null);" also resolves this error.
Nick: Any specific reason to pick the Xunit over NUnit? Loving your videos. Please keep posting new stuff. Your playlist is a treasure trove of complex concepts made simple. Already a subscriber. :)
I just had a talk at work on this very subject. Even though I used to contribute to NUnit, I'm here to tell you that it really doesn't matter between xUnit, NUnit, or MsTest v2. There is very little that you can't do in one over the other. If you refer to Nick's video on Nuget packages you should use he also mentions getting FluentAssertions which makes the argument of you prefer the way assertions are written in one framework over another. We went with xUnit at my current client because it keeps with the mentality of writing helper classes in your test projects that you can pass into the ctor just like you would with production code.
Good job, we are waiting the next video about NSubstitute & fake ...
Hi, how can I verify a protected method call using DI?
when I use var mock=new Mock
and try setup the protected with mock.Protected().Setup("MyMethod") I get a error: "No protected method found", but the method exists and it is virtual
but if I use var mock=new Mock it works but this way is not acceptable for my project, you know
"Returns()" from the repo mock is returning a Task that can't be converted to the model. help
same issue, please let me know if you solve it
@@AyushKarn25 Yes, use ReturnsAsync().
@@grigorecosmin it says this requires a receiver of type ISetupSequentialResult
Any solution to this?
@@grigorecosmin when using ReturnAsync it says only assignment, call, increment, decrement, await and new object expressions can be used as a statement
You haven't shown how to include the Moq libraries. I put "using Moq;" at the top of my test class and says it can not be found.
I don't see the github repo?
me too
Hey man, would you please send me link in which you discussed the Microsoft logger for dot net core web api. thanks in advance
it was a great session. How can we mock a external library extension extension methods using mock and XUnit
I think NSubstitute is the much better mocking framework. The code is so much more readable and easier to understand.
I totally agree with you as well. I am personally using NSubstitude and the next video is about that. I needed to show how NSub improves upon Moq so I had to show Moq first before I show NSub.
@@nickchapsas Alright that makes sense. Looking forward to that next video. Btw your Blazor video series helped me a lot.
Like and a Subscription. Great rapid walkthorough. Thank you!
did covered unit test will also work for visual studio?
What kind of extensions are you using while writing code in vs code tool.
Hey, big thanks for the video:) now all is more understandable, I just starting playing with unit tests.. I have one question, can you tell me how you have aaa autocomplete it (Arrange Act Assert) ?:) thanks
PS. For right now I make it snippet file and manually I'm adding this into visual studio and it's working fine but maybe is some already nuget with this function:)?
I have my own code template that implements that for me in rider
@@nickchapsas aa ok:), the same day I tried to find an extension to visual studio that would have such functionality, but unfortunately I did not find anything, so I decided to see if it is hard to create such an extension with such functionality and I sat up all night and managed to create such a thing, it now generates me AAA (Arrange, Act, Assert) and test methods that contain it, if you want it you can find in the marketplace under the name AAASnippet including documentation ;d. It's not some mega awesome, it's my first, but it does what it's supposed to do :) "AAASnippet"
Hi Nick
Hope you're doing well. I watched your all xunit video
I'm struggling for writing unit test using xunit framework. One for the method is inserting records into SQL db. I have written unit test case for this method but in the end cmd. executenonquery throwing exception like below
"BeginExecuteNonQuery requires an open and available connection. The connection currently state is closed"
I believe I need to mock sqlconnection. Any suggestions. Appreciated
good video dear sir.but i have a problem,i work with automapper and the controller return null.it seems that the autommaper should be inciated only one time.can yo help me with that
Super good! It helps me a lot!!!
where is the link to repo and how can we mock DataContext?
I would also like to watch a video about an advanced usage
I really don’t understand copy-pasting the exception message inbetween the test and the method implementation. This is one of the things about unit testing which does not sound quite right to me. I don’t know if there is a better way, though.
have you guys ever encountered problems with visibility to MOQ? does not work for me to .Setup(), whereas it works fine with for the rest of the Test but not for setting up MOQ.
not personally. The only time I've done this is when I've mocked HttpClient (well the handler that gets passed into the ctor). It only has a protected member that you have to override. There is a contribs nuget package to help with this but you can also define an interface and use the .Internal().As() or .Protected().As(). I find this easier to deal with as long as I know the hidden signature won't change.
is the _sut naming convention a standard when doing a test?
I don't think it's standard however I've seen it a fair number of times and do it myself.
@@robertsnyder4480 I think I'll get used to _sut instead of _concreteClass right 😆
unable to download the source code.pls help
Quick Question: Why are you using constructor in test class? Not sure which testing framework you are using but I think it should have a Setup attribute or something similar that you can decorate your method which will make the framework run the method every time a new test is run. Wondering why you decided to use constructor instead?
Update: figured it out. you are using XUnit and here is what they say
[SetUp] [TestInitialize] Constructor We believe that use of [SetUp] is generally bad. However, you can implement a parameterless constructor as a direct replacement. See Note 2
Cool.
Nah that’s not needed in xunit it’s unnecessary. The pattern with xunit is constructor for setup and dispose method for tear down which is way cleaner
@@nickchapsas yep agreed. I updated my comment as well showing what xUnit says.
I got confused on the Repository and the Service. Why does both of them have the same exact methods? Like, the repository has GetAllAsync(), and the service has GetAllAsync() as well, but the service uses the repository's method. Shouldn't we just use the repository in the controller? I'm new to things like this, and I just use an IMyRepository in my controllers.
it's not uncommen for the service to have multiple repositories or other external business rules and logic. His example helped to simplify things. So as far as business is concerned you're just getting customer data but that might include addresses and images and html.. You could be testing flow or how it reacts to systems being down. Hope this helps
@@robertsnyder4480 why don't we add the service and the repository as a dependency to the controller?
@@zerosandones7547 it might just be naming if you are referring to the controller in MVC pattern then you are right. If you mean controller as in entry point for web API then no. This is entry point and should deal with validation of the request and returning appropriate response based on your service output.
Hi Nick, thank you for your video's. Can you put your code her please, i can't find it in your link
Your Github repo for this app has over 2000 commits. Which commit should we download for this video?
Awesome
can please share source code link?
I didn't watch the whole video but when creating your mocks, you should specify MockBehavior.Strict or whatever it is to make sure you are not calling something you didn't intend.
Aren't you just testing the mock and not the actual code?
Helloo my brother when I want to display triple aaa like you there is no snippet for that, can you tell me how to do it?
I created a Live Templates using my Rider's feature. It's different based on the IDE that you are using. In Visual Studio it's called Snippets.
How did you get the aaa to expand to Arrange Act Assert?
I have created a template for it in JetBrains Rider so I just to aaa and press Tab and it creates it for me
great video, sorry I'm having trouble locating the source code for the project demo'd. I do not see a direct reference, nor indirectly from the git hub link. please add it. TYVM
The first line in the description will point you to the code
WHERE IS THIS SOLUTION ON YOUR SOURCES REPO WHATS IT NAMED ?!
Hai can you please tell me how to return only response and how to return null and nonull in xunit
Nice tutorial but the link in desc didnt take me to source code, is there a direct link ?
I see some example use [Test] instead of [Fact] with Moq, can anyone explain?
I don't know why this question doesn't have a response (or why I'm here! Thought process was, "are people still using Moq?"). Anyway for anyone else that stumbles across it. Those attributes are not part of Moq they are the testing framework, [Fact] is xUnit, [Test] possibly nUnit, [TestMethod] for example is MSTest. Hope that helps somebody.
could you please share the project link
Unfortunately the behavior with ILogger and extension methods (LogDebug, LogInformation) is not supported. You have to write the plain Log method which is quite big and almost impractical.
I suspect that's why you wrote a "generic ILoggingService" and not the standard ILogger.
Ωραίος !
Hi Nick, amazing video as usual.
I tried to add the shortcut aaa to generate my fact method, but I failed miserably. I have successfully added it to the LiveTemplates, but teh shortcut is not working in the Unitest context, not sure how to configure that :-/
Which brings me to a request: can you have a video to show your favorite custom templates, and maybe other Rider tricks as well as how to set that up
you can add it to live templates in rider. Don't forget add space before //. In my case, without space it doesn't work
Great learning material. It would be great if we can find and download source code.
You can find the source in the video description
Hi Nick, I am interested in the advanced tutorial on unit testing
You say gooo weed... I know what you want dude.