I have a scenario where I setup a variable of Type Object with Default value: {Object variable [unassigned]}
This will be populated with an array of sql query output. On first run of the test, the following code fails with TypeError: Cannot read property 'push' of null. The line with error is where this variable is to be populated: KeywordTests.Main.Variables.ourArray.push(RecSet.Fields.Item("ClaimID").Value);
On the 2nd run of this test, I get no errors and the script completes with appropriate log messages. I don't understand why this test will fail the 1st time it is run, but not on consecutive run of the code. Any thoughts are appreciated. Thanks.
// Step 9: // This involves running verus_CheckSubrogationClaim, // verus_UpdateSubrogationStatusByClaimID @ClaimID = ..., // verus_UpdateSubrogationNoticeInfo @ClientID = ... function ExecSubrogationCheck() { KeywordTests.Main.Variables.getID.Reset(); //KeywordTests.Main.Variables.ourArray = []; <-- Whenever I try this, I get a value that is read as not null !? var AConnection, RecSet, Cmd, cmdTxt; var clnt = KeywordTests.Main.Variables.getID.Value("ClientID"); var userID = KeywordTests.Main.Variables.getID.Value("Login"); var pWord = KeywordTests.Main.Variables.getID.Value("Password"); // Create a new Connection object AConnection = ADO.CreateConnection(); // Note that you can also create an ADO connection using the following code: // AConnection = getActiveXObject("ADODB.Connection"); // Specify the connection string AConnection.ConnectionString = "Provider=SQLOLEDB;Server=<redacted>;Database=CMS;Uid=" + userID + ";Pwd=" + pWord; // Activate the connection AConnection.Open(); // Create a new Coomnad object Cmd = ADO.CreateCommand(); // To create an ADO command you can also use the following code: // Cmd = getActiveXObject("ADODB.Command"); // Specify the connection Cmd.ActiveConnection = AConnection; // Specify command type and text Cmd.CommandType = adCmdText; // EXEC 1st part of subrogation check cmdTxt = 'EXEC verus_CheckSubrogationClaim'; Log.Message(cmdTxt); Cmd.CommandText = cmdTxt; // Execute the command Cmd.CommandTimeout = 0; RecSet = Cmd.Execute(); // Process the table records if (! RecSet.EOF){ RecSet.MoveFirst(); // Grab ClaimIDs put into variable ourArray while (! RecSet.EOF) { if (RecSet.Fields.Item("ClaimID").Value != null){ KeywordTests.Main.Variables.ourArray.push(RecSet.Fields.Item("ClaimID").Value); } RecSet.MoveNext(); } RecSet.Close(); } else { Log.Warning("No Subrogation Claims found!"); } // change ourArray into an actual array var s = KeywordTests.Main.Variables.ourArray; //var s = [5523598,5523599,5523600]; -- this is here for testing purposes var prevSep = aqString.ListSeparator; aqString.ListSeparator = ","; if (KeywordTests.Main.Variables.ourArray != null){ Log.Message(aqString.GetListLength(s) + " Subrogation Claims found."); Log.Message("EXEC verus_UpdateSubrogationStatusByClaimID @ClaimID = ...") //This reads through the array and EXEC verus_UpdateSubrogationStatusByClaimID @ClaimID = for each claim for (let i = 0; i < aqString.GetListLength(s); i++) { // Create a new Coomnad object Cmd = ADO.CreateCommand(); // Specify the connection Cmd.ActiveConnection = AConnection; // Specify command type and text Cmd.CommandType = adCmdText; // EXEC 2nd part of subrogation check cmdTxt = 'EXEC verus_UpdateSubrogationStatusByClaimID @ClaimID = ' + aqString.GetListItem(s,i); //Log.Message(cmdTxt); Cmd.CommandText = cmdTxt; // Execute the command Cmd.CommandTimeout = 0; RecSet = Cmd.Execute(); } aqString.ListSeparator = prevSep; //RecSet.Close(); -- this gave an error and was commented out Log.Checkpoint("Subrogation Claims status Updated"); } // EXEC 3rd part of subrogationcheck verus_UpdateSubrogationNoticeInfo @ClientID = // Create a new Coommand object Cmd = ADO.CreateCommand(); // To create an ADO command you can also use the following code: // Cmd = getActiveXObject("ADODB.Command"); // Specify the connection Cmd.ActiveConnection = AConnection; // Specify command type and text Cmd.CommandType = adCmdText; // EXEC 3rd part of subrogation check if (KeywordTests.Main.Variables.ourArray != null){ cmdTxt = 'EXEC verus_UpdateSubrogationNoticeInfo @ClientID = 2, @LawFirmID = ' + KeywordTests.Main.Variables.getID.Value("LawFirmID") + ', @SubId = 0, @SubNoticeID = 0'; //Log.Message(cmdTxt); Cmd.CommandText = cmdTxt; // Execute the command Cmd.CommandTimeout = 0; RecSet = Cmd.Execute(); } //Close connections AConnection.Close(); Log.Checkpoint("Subrogation Check for <redacted> Claims completed."); }
Solved! Go to Solution.
That works, too, but, to solve this issue I found I needed to change the following:
if (KeywordTests.Main.Variables.ourArray != null)
change to:
if (KeywordTests.Main.Variables.ourArray != '')
If I use null here, an empty string is passed to the sql query, causing the syntax error. If I use '' instead of null, no worries. Thanks.
Hey... I want a small help from everyone here... please tell me how to make cannot read property 'push' of null??? Just give me a better solution for this Mobdro.
You have to uncomment this line because this variable has to be initialized.
Have you tried with uncommenting below line in your code?
//KeywordTests.Main.Variables.ourArray = []; <-- Whenever I try this, I get a value that is read as not null !?
LinkedIn | CG-VAK Software | Bitbucket | shankarr.75@gmail.com
“You must expect great things from you, before you can do them”I have tried running the test with that variable initialized, uncommented that line, but I receive a syntax error. The initialization of that variable is read as something other than null, which causes bad data to be sent to the sql query in the next section. This causes a syntax error.
Keywordtest variables do not play well with native array objects. Rather than assigning that array to a keyword test variable, make it a local variable to the function, unless there is some need to have that array available in the keyword test.
That works, too, but, to solve this issue I found I needed to change the following:
if (KeywordTests.Main.Variables.ourArray != null)
change to:
if (KeywordTests.Main.Variables.ourArray != '')
If I use null here, an empty string is passed to the sql query, causing the syntax error. If I use '' instead of null, no worries. Thanks.
User | Count |
---|---|
7 | |
5 | |
2 | |
1 | |
1 |
Subject | Author | Latest Post |
---|---|---|