Ambil perhatian
Akses ke halaman ini memerlukan kebenaran. Anda boleh cuba log masuk atau menukar direktori.
Akses ke halaman ini memerlukan kebenaran. Anda boleh cuba menukar direktori.
Nota
Ciri pratonton bukan untuk kegunaan pengeluaran dan kefungsian mungkin terbatas. Ciri ini tersedia sebelum keluaran rasmi agar pelanggan boleh mendapat akses awal dan memberikan maklum balas.
Microsoft Power Fx ialah bahasa kod rendah berkuasa yang digunakan dalam Power Apps, dan ia boleh dilanjutkan menggunakan C# untuk mencipta fungsi ujian tersuai. Artikel ini menerangkan cara mencipta fungsi ujian C# Power Fx , memberikan pengalaman yang lancar untuk kedua-dua pembuat dan pembangun.
Model kebolehlanjutan Power Apps 'tiada tebing' Enjin Ujian memastikan pengguna boleh memperluaskan keupayaan Power Apps Enjin Ujian tanpa melanggar sebarang halangan. Model ini membolehkan pembangun mencipta fungsi tersuai menggunakan C#, yang boleh disepadukan untuk Power Fx mengendalikan senario yang kompleks.
Modul Enjin Ujian
Modul enjin ujian untuk Power Fx bahagian dalam Enjin Ujian dibina menggunakan model kebolehlanjutan. Anda boleh menggunakan kod produk sebagai contoh cara Test Engine boleh dilanjutkan.
Contoh dialog persetujuan
Berikut ialah contoh Power Fx fungsi yang menyediakan garis besar kod untuk mengendalikan dialog persetujuan bersyarat dalam aplikasi kanvas.
Dialog persetujuan ialah gesaan yang muncul kepada pengguna, meminta kebenaran mereka untuk mengakses sumber tertentu atau melakukan tindakan tertentu. Dialog ini penting untuk mengekalkan keselamatan dan memastikan pengguna mengetahui dan bersetuju dengan tindakan yang diambil bagi pihak mereka.
Dialog persetujuan adalah penting kerana ia membantu menghalang akses dan tindakan yang tidak dibenarkan. Ia memastikan pengguna dimaklumkan dan memberikan persetujuan eksplisit mereka sebelum sebarang operasi sensitif dilakukan. Ini penting dalam senario di mana aplikasi perlu mengakses data pengguna atau melakukan tindakan dan tingkah laku bersyarat ini boleh menjejaskan ujian automatik.
Cabaran dengan dialog persetujuan dalam ujian
Salah satu cabaran dengan dialog persetujuan ialah mereka boleh menjadikan ujian tidak deterministik. Gesaan boleh muncul secara bersyarat berdasarkan pelbagai faktor, seperti keizinan pengguna atau interaksi sebelumnya. Penampilan bersyarat ini boleh merumitkan proses ujian, kerana Enjin Ujian perlu mengendalikan dialog ini dengan sewajarnya.
Mengabstraksi kerumitan dengan Power Fx
Power Fx membantu mengabstrakkan kerumitan menunggu dialog persetujuan secara bersyarat dan mencipta sambungan jika perlu. Pembuat boleh menggunakan Power Fx untuk menentukan logik untuk mengendalikan dialog persetujuan dengan cara yang lebih mudah dan intuitif.
Contoh: Mengendalikan dialog persetujuan dengan Power Fx
Berikut ialah contoh penggunaan Power Fx untuk mengendalikan dialog persetujuan dalam halaman tersuai:
Preview.ConsentDialog(Table({Text: "Center of Excellence Setup Wizard"}))
Dalam contoh ini, fungsi menyemak ConsentDialog sama ada dialog persetujuan kelihatan. Jika ya, fungsi boleh bertindak balas kepada dialog yang mengesahkan persetujuan untuk akaun ujian. Setelah dialog dikendalikan, langkah ujian yang tinggal dilaksanakan.
Hujah membenarkan Table proses menunggu dialog persetujuan keluar ialah label dengan teks yang disediakan kelihatan.
Memperluaskan Power Fx fungsi ujian menggunakan C#
Contoh berikut ialah contoh kod garis besar yang boleh digunakan sebagai titik permulaan untuk melengkapkan contoh ini:
// 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
}
}
}
Penjelasan contoh ConsentDialogFunction
-
Ruang Nama dan Import: Mengimport ruang nama yang diperlukan dan mentakrifkan
testengine.moduleruang nama. -
Definisi Kelas: Kelas
ConsentDialogFunctionmewarisi daripada ReflectionFunction dan mentakrifkan fungsiConsentDialogtersuai. -
Pembina: Memulakan fungsi dengan kebergantungan yang diperlukan, termasuk
ITestInfraFunctions,ITestState, dan ILogger. -
Laksanakan Kaedah: Log pelaksanaan dan memanggil
ExecuteAsynckaedah untuk mengendalikan dialog persetujuan. - Kaedah ExecuteAsync: Mendapatkan semula konteks halaman dan mengendalikan dialog persetujuan dengan tamat masa.