【问题标题】:How to select a record on a Test Page如何在测试页面上选择记录
【发布时间】:2023-03-29 21:02:01
【问题描述】:

我正在尝试模拟用户,在列表页面(即项目列表)上选择一条记录。这是为了测试一个程序,该程序打开所述列表页面,等待用户输入,如果用户按确定,则将列表页面中的选定行作为行添加到文档中(即采购行/采购页眉)

    [Test]
    [HandlerFunctions('ItemListOkModalPageHandler')]
    procedure TestAddItemLineItemList()
    var
        LRec_PurchaseHeader: Record "Purchase Header";
        LRec_PurchaseLine: Record "Purchase Line";
        LC_PageHelper: Codeunit "Page Helper";
    begin
        //[GIVEN] given
        CreatePurchaseOrder(LRec_PurchaseHeader);
        LRec_PurchaseLine.SetRange("Document Type", LRec_PurchaseHeader."Document Type");
        LRec_PurchaseLine.SetRange("Document No.", LRec_PurchaseHeader."No.");
        LRec_PurchaseLine.SetRange(Type, "Purchase Line Type"::Item);
        GC_LibraryAssert.RecordIsEmpty(LRec_PurchaseLine);
        //[WHEN] when
        LC_PageHelper.AddMultiplePurchaseLines(LRec_PurchaseHeader);
        //[THEN] then
        GC_LibraryAssert.RecordCount(LRec_PurchaseLine, 1);  // error happens here
    end;

    [ModalPageHandler]
    procedure ItemListOkModalPageHandler(var PTP_ItemList: TestPage "Item List");
    begin
        PTP_ItemList.First();
        PTP_ItemList.OK().Invoke();
    end;

当尝试这样做时,我收到以下错误消息:

Error:
        Assert.RecordCount failed. Expected number of Purchase Line entries: 1. Actual: 0.

任何建议,我做错了什么?

编辑:程序代码 AddMultiplePurchaseLines

procedure AddMultiplePurchaseLines(PRec_PurchaseHeader: Record "Purchase Header")
    var
        LRec_Item: Record Item;
        LP_ItemList: Page "Item List";
    begin
        PRec_PurchaseHeader.TestField(Status, "Purchase Document Status"::Open);
        if GuiAllowed then begin
            LP_ItemList.LookupMode(true);
            if LP_ItemList.RunModal() = Action::LookupOK then begin
                LRec_Item.SetFilter("No.", LP_ItemList.GetSelectionFilter());
                AddPurchaseOrderItemLines(PRec_PurchaseHeader, LRec_Item);
            end;
        end;
    end;

【问题讨论】:

  • 能否分享AddMultiplePurchaseLines程序的代码?
  • 能否也添加AddPurchaseOrderItemLines 的代码?

标签: dynamics-business-central microsoft-dynamics-nav


【解决方案1】:

您需要解决的第一个问题是在Page 上激活LookupMode 会更改RunModal 的返回值。

这意味着在AddMultiplePurchaseLines 中您必须将其更改为:

if LP_ItemList.RunModal() = Action::LookupOK then begin

其次,在ItemListOkModalPageHandler 中对Expand 的调用没有任何作用。它所做的只是扩展树结构(如果存在)。

【讨论】:

  • 感谢您指出 RunModal 过程的返回值问题。但是,它并不能解决为测试用例选择记录的问题。
猜你喜欢
  • 2019-03-21
  • 2023-03-11
  • 2013-09-23
  • 1970-01-01
  • 2018-11-21
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多