Partekatu bidez


Sortu C# Power Fx proba funtzio bat (aurrebista)

Oharra

Aurrebista-eginbideak ez daude ekoizpenerako diseinatuta, eta funtzionalitate murriztua izan dezakete. Eginbide horiek kaleratze ofiziala baino lehen dauden erabilgarri, bezeroek atzitu eta beren oharrak eman ditzaten.

Microsoft Power Fx Power Apps-n erabiltzen den kode gutxiko lengoaia indartsua da, eta C# erabiliz hedatu daiteke proba-funtzio pertsonalizatuak sortzeko. Artikulu honek C# Power Fx test funtzio bat nola sortu azaltzen du, bai egileentzat bai garatzaileentzat esperientzia ezin hobea eskainiz.

Test Motorraren *amildegirik gabeko* hedagarritasun ereduak bermatzen du erabiltzaileek *Test Motorraren* gaitasunak zabaldu ahal izango dituztela inolako oztoporik jo gabe. Power Apps Power Apps Modelo honek garatzaileei C# erabiliz funtzio pertsonalizatuak sortzeko aukera ematen die, eta hauek egoera konplexuak kudeatzeko integratu daitezke. Power Fx

Proba-motorraren moduluak

Test Engine-ren barruko proba-motorraren moduluak hedagarritasun-eredua erabiliz eraikitzen dira. Power Fx Produktuaren kodea erabil dezakezu Test Engine nola zabaldu daitekeen adibide gisa.

Hona hemen mihise aplikazio batean baldintzapeko baimen elkarrizketa bat kudeatzeko kodearen eskema eskaintzen duen funtzio baten Power Fx adibidea. ...

Baimen-elkarrizketa erabiltzaileei agertzen zaien gonbidapena da, baliabide jakin batzuetara sartzeko edo ekintza zehatzak egiteko baimena eskatzen diena. ... Elkarrizketa hau ezinbestekoa da segurtasuna mantentzeko eta erabiltzaileek beren izenean egiten diren ekintzen berri dutela eta ados daudela ziurtatzeko.

Aplikazio baten konexio-baimenaren elkarrizketa-koadroaren adibidea gune batera konektatzen denean. SharePoint

Baimen-elkarrizketa garrantzitsua da, baimenik gabeko sarbidea eta ekintzak saihesteko balio duelako. Erabiltzaileak informatuta daudela eta edozein eragiketa sentikor egin aurretik berariazko baimena ematen dutela ziurtatzen du. Garrantzitsua da aplikazioak erabiltzaile-datuetara sartu edo ekintzak egin behar dituenean, eta baldintzapeko portaera honek proba automatizatuetan eragina izan dezakeenean.

Baimen-elkarrizketa-elkarrizketekin dauden erronketako bat da probak ez-deterministak bihur ditzaketela. Gonbidapena baldintzapean ager daiteke hainbat faktoreren arabera, hala nola erabiltzailearen baimenak edo aurreko interakzioak. Itxura baldintzatu honek proba-prozesua zaildu dezake, Proba-motorrak elkarrizketa-koadro hauek behar bezala kudeatu behar baititu.

Konplexutasuna abstraitzea honekin Power Fx

Power Fx Baimen-elkarrizketa baldintzapean itxarotearen konplexutasuna laburbiltzen eta behar izanez gero konexioak sortzearen konplexutasuna laguntzen du. Egileek Power Fx erabil dezakete baimen-elkarrizketak modu zuzenago eta intuitiboagoan kudeatzeko logika definitzeko.

Hona hemen Power Fx erabiltzearen adibide bat orrialde pertsonalizatu batean baimen-elkarrizketa bat kudeatzeko:

Preview.ConsentDialog(Table({Text: "Center of Excellence Setup Wizard"}))

Adibide honetan, ConsentDialog funtzioak baimena emateko elkarrizketa-koadroa ikusgai dagoen egiaztatzen du. Hala bada, funtzioak proba-konturako baimena berresteko elkarrizketa-koadroari erantzun diezaioke. Elkarrizketa kudeatu ondoren, gainerako proba-urratsak exekutatzen dira.

*Argumentuak baimen-elkarrizketa itxarote prozesua amaitzeko aukera ematen du emandako testua duen etiketa bat ikusten bada.* Table

C# erabiliz proba funtzioak zabaltzea Power Fx

Adibide hau abiapuntu gisa erabil daitekeen eskema-kode baten lagina da:

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
using Microsoft.Extensions.Logging;
using Microsoft.Playwright;
using Microsoft.PowerApps.TestEngine.Config;
using Microsoft.PowerApps.TestEngine.TestInfra;
using Microsoft.PowerFx;
using Microsoft.PowerFx.Core.Utils;
using Microsoft.PowerFx.Types;

namespace testengine.module
{
    /// <summary>
    /// This will check the custom pages of a model driven app looking for a consent dialog
    /// </summary>
    public class ConsentDialogFunction : ReflectionFunction
    {
        private readonly ITestInfraFunctions _testInfraFunctions;
        private readonly ITestState _testState;
        private readonly ILogger _logger;
        private static TableType SearchType = TableType.Empty()
              .Add(new NamedFormulaType("Text", FormulaType.String, displayName: "Text"));
    
        /// <summary>
        /// Constructor: Initializes the function with necessary dependencies, 
        /// including ITestInfraFunctions, ITestState, and ILogger.
        /// </summary>
        /// <param name="testInfraFunctions">The test infrastructure functions.</param>
        /// <param name="testState">The test state.</param>
        /// <param name="logger">The logger instance.</param>
        public ConsentDialogFunction(ITestInfraFunctions testInfraFunctions, 
           ITestState testState, 
           ILogger logger) : base(DPath.Root.Append(
               new DName("Preview")), 
               "ConsentDialog", 
               FormulaType.Blank, 
               SearchType)
               {
                  _testInfraFunctions = testInfraFunctions;
                  _testState = testState;
                  _logger = logger;
               }

        /// <summary>
        /// Execute Method: Logs the execution and calls the ExecuteAsync 
        /// method to handle the consent dialog.
        /// </summary>
        /// <param name="searchFor">The table value to search for.</param>
        /// <returns>A blank value.</returns>
        public BlankValue Execute(TableValue searchFor)
        {
            _logger.LogInformation("------------------------------\n\n" +
                "Executing ConsentDialog function.");

            ExecuteAsync(searchFor).Wait();

            return FormulaValue.NewBlank();
        }

        /// <summary>
        /// ExecuteAsync Method: Retrieves the page context and handles the consent dialog with a timeout.
        /// </summary>
        /// <param name="searchFor">The table value to search for.</param>
        /// <returns>A task representing the asynchronous operation.</returns>
        private async Task ExecuteAsync(TableValue searchFor)
        {
            var page = _testInfraFunctions
               .GetContext()
               .Pages
               .Where(p => p.Url.Contains("main.aspx"))
               .First();

            // ... IPage to handle consent dialog with timeout
        }
    }
}

ConsentDialogFunction adibidearen azalpena

  • Izen-espazioa eta inportazioak: Beharrezko izen-espazioak inportatzen ditu eta testengine.module izenak definitzen ditu.
  • Klasearen definizioa: ConsentDialogFunction klaseak ReflectionFunction -tik oinordetzan hartzen du eta funtzio pertsonalizatua ConsentDialog definitzen du.
  • Eraikitzailea: Funtzioa beharrezko mendekotasunekin hasieratzen du, besteak beste, ITestInfraFunctions, ITestState eta ILogger.
  • Exekutatu metodoa: Exekuzioa erregistratzen du eta ExecuteAsync metodoa deitzen du baimenaren elkarrizketa kudeatzeko.
  • ExecuteAsync metodoa: Orriaren testuingurua berreskuratzen du eta baimenaren elkarrizketa-koadroa denbora-muga batekin kudeatzen du.