所以我是新来的salesforce,我完成了我的培训,现在我正在做一个项目。但是在我的项目中,我偶然发现了一个测试类,我没有找到编写它的方法,所以如果有人能帮我找到一种方法,我将不胜感激。这是代码:
public class AP01_Opportunity
{
//Method to create a new service contract when opportunity = Gagné
public static void CreateContract(List<Opportunity> listOpp, Map<Id, Opportunity> oldMap)
{
//Variable Declaration
ServiceContract sc;
List<ServiceContract> listSCToAdd = new List<ServiceContract>();
List<ContractLineItem> listContractItems = new List<ContractLineItem>();
List<Opportunity> listOppGagne = new list<Opportunity>();
//Loop in list of opportunities
for(Opportunity opp : listOpp)
{
if(opp.StageName == Label.ClotureGagne && !oldMap.get(opp.Id).isWon)
{
listOppGagne.add(opp);
}
}
//check if list has opportunity becoming won
if(listOppGagne.size() > 0){
Map<Id, Opportunity> mapOppGagne = new Map<Id, Opportunity> ([SELECT Id,
Name,
StageName,
Pricebook2Id,
Account.Name,
(SELECT Id,
PricebookEntryId,
PricebookEntry.Name,
Quantity,
UnitPrice
FROM OpportunityLineItems)
FROM Opportunity
WHERE Id in :listOppGagne]);
for( Opportunity opp : listOppGagne )
{
//Create new service contract
sc = new ServiceContract();
sc.Name = opp.Name;
sc.ApprovalStatus = Label.Activated;
sc.OpportunityId__c = Id.valueOf(opp.Id);
sc.Pricebook2Id = opp.Pricebook2Id;
sc.StartDate = Date.today();
listSCToAdd.add(sc);
}
if(listSCToAdd.size() > 0){
insert listSCToAdd;
Opportunity currentOpp;
ContractLineItem cli;
Id oppId;
for(ServiceContract servcont : listSCToAdd)
{
oppId = servcont.OpportunityId__c;
if(mapOppGagne.containsKey(oppId))
{
currentOpp = mapOppGagne.get(oppId);
//copy the oppLineItems per opportunity to the respective Service Contract
for(OpportunityLineItem items : currentOpp.OpportunityLineItems)
{
cli = new ContractLineItem();
cli.PricebookEntryId = items.PricebookEntryId;
cli.Quantity = items.Quantity;
cli.UnitPrice = items.UnitPrice;
cli.ServiceContractId = servcont.Id;
listContractItems.add(cli);
}
}
}
if(listContractItems.size() > 0)
{
insert listContractItems;
}
}
}
}
}
此代码是一个触发器,当opportunity stage更改为“CloturéGagné”时,它会创建一个新的服务合同记录,其中包含从opportunity line items复制的合同行项目,在法语中表示closed woné。
提前谢谢你。
为了编写一个简单的测试类,我建议您使用以下指南:https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_qs_test.htm
这个想法很简单:假设您在Test类中创建一个机会,并在case中进行插入或更新-您的触发器类将自动触发并运行AP01_Opportunity类中的代码。您可以放一些
System.debug('some message');
检查您的逻辑是否按预期工作以及执行了哪些代码块
我一直试图找出Web服务标注的测试类。我有四个不同的类。它包含所有参数以及字段的所有信息和匹配。我有一个类,我有一个和。 在中,整个HTTPRequest和标注在我调用类的地方进行处理,然后从触发它。 现在的困难是测试类,因为我不是一个有经验的开发人员。 我将如何管理此代码的测试类(我已经进行了更改,以防它是一些重要信息)? 下面是API\U成员类 下面是API\U响应类
tl;dr-在继续测试之前,如何使测试类等待特定触发器完成其更新或插入? 出身背景 我有一个触发器,每当创建帐户对象时都会创建一个新的对象,然后将这两条记录相互关联(请参阅下面的帐户触发器)。 我还在Portal\u Content\u c对象上创建了一个触发器,在删除记录时触发该触发器。删除时,触发器会查找相关的帐户记录并将其删除(请参见下面的门户内容触发器)。 我的问题是关于我的门户内容测试类
我已在Salesforce APEX中记录了触发器。它工作正常。 触发器代码为: 现在我正在尝试为它的测试类编写代码。它在线上给出错误,说对象无法解析为字符串。 测试等级代码为: 期待找到解决方案。任何帮助都将不胜感激。 谢谢
我已经为此发疯了。我的IF循环中没有任何东西通过我的测试类触发,我不知道为什么。我在网上阅读了很多,看起来我做的事情是正确的,但它仍然没有解决我的代码覆盖率。这是运行的最后一行:如果(isIn==True){ 之后我无法让任何东西在IF循环中运行,我已经颠倒了逻辑,它仍然无法运行。我觉得当有人指出它时,我会踢自己,但这是我的代码: } 这是我的测试类:
我一直在读《理解Apex测试》。在题为“理解测试数据”的一节中,有一句话如下 如果测试发出Visualforce请求,则正在执行的测试将保留在测试上下文中,但在不同的线程中运行,因此不再强制执行测试数据隔离。 这很有趣,我想写一个测试类来说明这个概念,但是我对句子的第一个子句感到困惑:“如果测试发出Visualforce请求......”。一个人是如何做到的?
我想编写一个单元测试,检查调用是否不是从触发器发出的 我知道如何通过实现HttpCalloutMock来测试调用是否正确: 但是如果没有发出HTTP请求,那么就不会调用响应()方法。所以这种方法根本不会测试请求是否发出。 我需要这样的东西: 我该怎么做?