2
votes

Comment appeler une méthode à partir d'une classe d'assistance?

J'ai une classe avec le nom CommonSteps.java qui contient la méthode suivante:

public void an_upload_invoice_error_message_is_displayed() throws Throwable {
    List<Map<String, Object>> invoiceDocuments = dbHelperInvoices.getInvoiceDocumentsFilePath(testData.getInt("orderRef"));
    if (invoiceDocuments.get(0).get("jobSheetFilePath") == null && invoiceDocuments.get(0).get("invoiceFilePath") != null) {
        assertTrue("Unexpected error message displayed", runtimeState.uploadInvoiceDocumentPage.isUploadJobSheetErrorDisplayed());
        outputHelper.takeScreenshot();
    } else if (invoiceDocuments.get(0).get("invoiceFilePath") == null && invoiceDocuments.get(0).get("jobSheetFilePath") != null) {
        assertTrue("Unexpected error message displayed", runtimeState.uploadInvoiceDocumentPage.isUploadInvoiceErrorDisplayed());
        outputHelper.takeScreenshot();
    } else if (invoiceDocuments.get(0).get("invoiceFilePath") == null && invoiceDocuments.get(0).get("jobSheetFilePath") == null){
        assertTrue("Unexpected error message displayed", runtimeState.uploadInvoiceDocumentsPage.isUploadInvoiceErrorDisplayed());
        assertTrue("Unexpected error message displayed", runtimeState.uploadInvoiceDocumentsPage.isUploadJobsheetErrorDisplayed());
        outputHelper.takeScreenshot();
    }
}

Je voudrais appeler cette méthode dans une autre classe dans une assertion. J'ai écrit le code suivant jusqu'à présent:

    @Then("^an upload invoice error message is displayed$")
public void an_upload_invoice_error_message_is_displayed() throws Throwable {
    List<Map<String, Object>> invoiceDocuments = dbHelperInvoices.getInvoiceDocumentsFilePath(testData.getInt("orderRef"));
    if (invoiceDocuments.get(0).get("jobSheetFilePath") == null && invoiceDocuments.get(0).get("invoiceFilePath") != null) {
        assertTrue("Unexpected error message displayed", commonSteps.the_error_is_displayed(message));

Ma question est que dois-je utiliser à la place de la variable message? Ou que dois-je ajouter pour que la variable de message fonctionne? Comme ce code lève une erreur. J'espère que c'est assez d'informations. Je suis nouveau dans le codage, alors excusez-moi si c'est une question idiote.

EDIT: Mon code précédent était

    @Then("^the following error is displayed: \"([^\"]*)\"$")
public void the_error_is_displayed(String message) throws Exception {
    // although using the login page to retrieve - these will return if visible from any page!
    message = errorHelper.generateErrorMessage(message);
    assertThat(runtimeState.loginPage.getErrors(), hasItem(containsString(message)));
}

Cependant, on m'a dit de changez le code pour appeler la méthode à partir de CommonSteps.java ci-dessus


0 commentaires

3 Réponses :


0
votes

Vous devez créer un objet de la classe où vit the_error_is_displayed (String) . Ensuite, vous pouvez utiliser ses méthodes dans la méthode an_upload_invoice_error_message_is_displayed () .

Vous pouvez créer cet objet en tant que champ de la classe juste sous la déclaration de classe, ou dans la méthode an_upload_invoice_error_message_is_displayed () .

Si vous êtes toujours bloqué, collez la classe entière où vit an_upload_invoice_error_message_is_displayed () .


0 commentaires

0
votes

Voir la réponse à cette question

Vous devez faire de la méthode que vous souhaitez appeler - the_error_is_displayed dans votre cas - une méthode statique publique . De cette façon, il peut être appelé de n'importe où.


0 commentaires

0
votes

J'ai fini par coder en dur la valeur car je ne trouvais pas d'autre moyen de passer la variable. Je ne suis pas sûr que ce soit le meilleur moyen, mais cela fonctionnera pour le moment. Mon code est ci-dessous:

List<Map<String, Object>> invoiceDocuments = dbHelperInvoices.getInvoiceDocumentsFilePath(testData.getInt("orderRef"));
    if (invoiceDocuments.get(0).get("jobSheetFilePath") == null && invoiceDocuments.get(0).get("invoiceFilePath") != null) {
        commonSteps.the_error_is_displayed("Please select a Job Sheet to upload");
        outputHelper.takeScreenshot();
    } else if (invoiceDocuments.get(0).get("invoiceFilePath") == null && invoiceDocuments.get(0).get("jobSheetFilePath") != null) {
        commonSteps.the_error_is_displayed("Please select an Invoice to upload");
        outputHelper.takeScreenshot();
    } else if (invoiceDocuments.get(0).get("invoiceFilePath") == null && invoiceDocuments.get(0).get("jobSheetFilePath") == null){
        commonSteps.the_error_is_displayed("Please select a Job Sheet to upload");
        commonSteps.the_error_is_displayed("Please select an Invoice to upload");
        outputHelper.takeScreenshot();
    }


0 commentaires