Triggers apex中的测试类
所以我是salesforce的新手,我完成了培训,现在正在做一个项目。但是在我的项目中,我偶然发现了一个测试类,我没有找到一种写它的方法,所以如果有人能帮我找到一种写它的方法,我将不胜感激。代码如下:Triggers apex中的测试类,triggers,salesforce,apex,test-class,Triggers,Salesforce,Apex,Test Class,所以我是salesforce的新手,我完成了培训,现在正在做一个项目。但是在我的项目中,我偶然发现了一个测试类,我没有找到一种写它的方法,所以如果有人能帮我找到一种写它的方法,我将不胜感激。代码如下: public class AP01_Opportunity { //Method to create a new service contract when opportunity = Gagné public static void CreateContract(Lis
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é(法语为Closure Win)时,它将创建一个新的服务合同记录,其中包含从opportunity line items复制的合同行项目
提前谢谢。为了编写一个简单的测试类,我建议您使用以下指南: 想法很简单:假设您在测试类中创建一个Opportunity,并在您的案例中进行插入或更新-您的触发器类将自动触发并运行AP01_Opportunity类中的代码。你可以放一些
System.debug('some message');
若要检查您的逻辑是否按预期工作,以及执行了哪些代码块您好,请再次询问是否有人可以帮助我,我仍然卡住了,我确实需要帮助。提前感谢您。此类不是触发器。或者你从Opportunity的触发器类调用它?我从Opportunity的触发器类调用它这里是我的触发器类:trigger Opportunity AfterUpdate on Opportunity AfterUpdate{ifPAD.canTrigger'AP01_Opportunity'{AP01_Opportunity.CreateContractTrigger.new,trigger.oldMap;}抱歉,我不明白重点。您有一个更新后触发器ok。在这个更新后触发器中,您调用静态方法吗?坎特里格。这个方法有什么作用?最后但并非最不重要的一点:您说过要为这个触发器创建一个测试类。那么代码在哪里?问题具体在哪里?canTrigger是一种旁路方法,如果它返回true,它不会通过触发器,它只会绕过它。关于我的测试课,我不能写一个。因为我是新来的,我发现写一个很困难,所以我没有一个代码来回答我的问题。对此我很抱歉。我需要有人告诉我怎么做。先谢谢你。