Come back. We'll continue from same point where I stopped in the earlier video. Actually, if you see I have two test cases, one to assert the prelude and one for while verifying the call to a sub flow in this two flows in the two test cases actually don't to think that set event is common for all the cases. Yes, there might be some there might be some common processes which are which are common, that should be executed before each and every test before each and every test case I want some logic to get executed. So what I can do is if I have some behavior, which needs to be executed before we can every test, what I can do is here I can drag and drop before test and Whatever I want to get executed before each and every test, I can contact and drag and drop it here.
So, I don't need the settee will again here I can eliminate the redundant. So, if you write something in before test, this will be executed before each and every test. Now, tell me in this case, How many times will reset even recall one time or two times two times because there are two cases. So, before each and every test this will be executed. You may have some logic that should be executed before suit is only once for the whole suit. Then you can keep such logic inside before suit by just dragging and dropping signal I guess you understand after suit and after test right.
So if you want to get if you want to execute some logic after every test and after every So, then you can write such logic after this and after So, okay. So, now I don't want to write anything inside of this after. So, it can be for suit I will remove them okay we eliminated redundancy in my cases by using the for test right. So, next thing I want to discuss is how to write a unit test case. Till now, what we have done is we have written integration test case integration test case means water can see this main flow after in the cases for main flow main flow is actually calling another flowchart choice flow this main flow is integrating with choice flow. So, if there is a bug in choice flow, the main case the the main flow also will fake I don't want like that, I want to test the logic only present inside main flow so, I want to mock the call to flow reference right.
So, actually what what is the result of calling this choice flow there will be a variable called as when we call the child flow as a call the control go to first one or second one. So, the control will go to a supply one or Sanford. So, if it goes to supply one the output will be a variable my variable with value my variable one if it costs suffer to the value of my variable will be my variable. So, that is the output of choice flow in location right so, I want to mock right. So, how to market first of all I'll actually create one more case, okay. Case and I want to assert Like earlier, I'll drag and drop assert that.
And I'll configure a set that here expression is only again as payload and I want to assert that payload is yam unit tools colon colon equals response. underscore, pain load underscore one. Yeah. Here's a message sa, p load is not as x. Okay. Now, what I want is whenever I'm calling this floor, I want actually to Make sure that the call to this flow reference is locked.
Okay? So one thing I want to do is, I want to show you clearly so I don't want right now this test case to execute. So I want to ignore this right now to show you is it clarity so I'll double click on it, ignore test. Okay. Similarly, I'll double click on the other one and ignore test. So, both of the test cases will be no you can see on the UI that this symbol comes on the ignore case right now only case I have is this one.
So whenever I run this, I want to mock. So if you want to mock what you can do is see here in the top there is something called as behavior. We can In a mock here, so in Admin Tools I have mock when I will drag and drop this mock when. So it does mock when, when when the control comes to you column flow dash reference having attribute and edit in line having an attribute name and the value is choice low tech is just the name is that the name and main flow just go tech similar tech in my main flaw yeah name is Chase fly want to mop this floor from It. So tagname is called Florida's for friend name attribute value for the choice for that same thing. Okay, so I'll go here.
And I'll again double click on Mach one for Mach when the control comes to you called flora, and has an attribute. Again, an attribute value is gone. There's a bug with studio sometimes. Again, I'll click on attribute, ad. Name, his name, values choice flow, finish. So better you always click on Save.
So then only this will be saved. And I told when this mock should be executed, what it should return. What are you expecting it to return? When you're marking this choice flow What are you expecting me to return right now? expecting a variable colors, my variable whose value is a variable one? Oh, go back I mean this mock one what to return?
Let me show you 10 return on that. Here it comes, then return. Do you want to return payload, anything in the know anything in the attributes No. I want to return variables. I'll click on class. I'll click on this select variables I want to add some variables, what's the variable my variable and the value should be My variable one let the values of media type and other others will be different.
So I want to return event. I'm not bothered about setting the trailer and attributes and error message I want variable my variable like this, right? So that's what I marked and save all and then run it. Now I will run this oh the test case looks to have failed let us see the reason for failure. I'll maximize this. maximize this and see here what is the reason for failure?
What are the same element my variable one is not defined New registry. Good to see this error I want I've done this intentionally. So actually, what you have to is the thing I made a mistake here, when I'm configuring this mock when here I configured the value of my variable s, maybe one, the value should be an expression Actually, I have to write it like this. And I want whiskering. So I'll keep it inside similar code. Actually, the value has to be an expression.
Otherwise it will look for this variable in something called as view register. So make sure that whenever you are actually given key value face yet write an expression. So I forgot to write it in said hash square bracket. There was a mistake so I'll finish right now. And now and then unnecessary. It is absurd now.
The two are ignored and discord succeeded, right? Let us just observe whether it got really bombed or not I open this XML. Actually, if you see the red tick marks here, here, here, and here is a tick mark on supply one. E are the tick marks on this choice No, no, right. So earlier you saw that they were tick marks when it didn't block. So, since this is this was mock so actually the floor reference was not executed, the mock was executed and what our mock return was taken to the next element.
So now you understood how to mock. Now what I also want to do is I want to spy a component So if I want to spy what I can do is let's assume Let's see here. And there's me only demo. Here I have a transform message immediately after stimulus none. Okay, actually it is not required. Oh, a drag and drop when I was showing some example.
Okay, he's actually not required, but let it be. So here, I want to write an expression. I want to ah, I'll tell you this transformation just for demonstration right now and deleted. Drag and drop one more set payload. Here I will write the value is simple dummy. All right.
So now I want to spy this second set payload. Spy means what? I want to check what are the pain? What is the payload? Or what is the limit before and after, I would spy the values before and after. Right?
So I just see the XML first can distinguish these two separate loads. This is set payload. I'll use the name attribute every attack has a name attribute I'll use or they will be unique name is equals to say dummy. And your name is Acosta. Set fee set up okay. Now, I want to add a spy, which can spy the values before and after set payload.
So again so in the in the behavior I can drag and drop a spy. Spy has something before colon after all. Before I go ahead, I want to specify when the spy should be executed whenever it comes through mule colon, set pradesh alone with attributes name and the value should be what? set up right? Yes. So I'm filling When the spy should be executed, whenever it encounters attack whose name is we'll call set payload and attribute name is and then what else I told when the spy should be executed then there are two things before call and after call, I will actually assert before call like I want right one more asset after the call to the set.
So, if I want to do some pre and post before any element, I can do this assert that. What I will assert is the payload and temperature colonies are set now. Just wait yeah, send back hash payload is again. Yamuna tolls colon colon equals right. Then second desert again, right hash payload yum unit equals what? Whatever is the value I'll pass for you or less per key right?
I'm setting this period as the value for you or once and what is the value I'm giving for you Ireland's core key in my test case. You're Because I was giving paydex score one according to expression, right? failing score one. So we'll go back here in a second after the call, I'll assert that period is equals to Oh, I can put here by mistake. I just drag it here again because to the load and score Okay, so now you know how to spy, any particular message pricing. So like that we can use pie if you want to Make sure that the better before and after called any process as expected.
That's all what I want to talk about em unit, how you know how to write unit test case, how to write a unit test case, how to actually mock and how to actually fight. Thank you President of immunity