繁体   English   中英

Apex访问说明符和测试类

Apex Access Specifiers and Test Classes

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我在SalesForce Apex代码中看到一些我不理解的行为。 似乎违反了代码安全性规则。 我有一个看起来像这样的控制器:

public with sharing class CaseController {

    //Properties
    public Case TheCase { get; private set; }

    //
    //Constructor
    public CaseController(ApexPages.StandardController controller) {
        //Some unimportant stuff
    }

    //
    //Validates all data coming in from the view and saves the case
    public PageReference Save() {
        //Some other unimportant stuff
    }
 }

看起来像这样的测试:

private static testMethod void Save_WithCompleteCase_SavesCase() 
{
    //Given
    User user = GetTestUser('Standard User');
    Product2 theProduct = GetTestProduct();
    Case theCase = GetTestCase(user, theProduct);

    System.runAs(user) {

        //When
        CaseController controller = new CaseController(new ApexPages.StandardController(theCase));
        controller.TheCase.Subject = 'Test Case'; //Making a change to test it saved
        PageReference page = controller.Save();

        //Then

    }
 }

请注意,我的控制器在“ TheCase”上有一个专用设置器,但是我可以在测试类中更改其值。 此代码有效,并由SalesForce处理。 为什么? 关于测试类,有什么特别的地方可以允许他们访问其他类的私有成员?

谢谢!!

1 个回复

杜,没有早点想清楚。 设置者在案例属性本身是私有的,但是案例的属性(例如主题)仍然可以公开访问。

将Case属性设为私有集只能保护控制器,使其下方的Case免受更改。

抱歉!!

1 访问说明符以及类和对象?

好吧,我试图理解这一点, 所以类只是为对象创建模板。 对象只是使用类模板创建特定项。 还有另一个问题,公共说明符用于使对象中的数据成员可用,而私有说明符用于使类中的数据成员仅可用? ...

2 类访问说明符的问题

我有一个文件Test.java,内容如下: Tasklet是一个Spring Batch界面。 我收到如下错误: 错误的原因是什么? 怎么解决呢? 谢谢阅读! ...

3 类中的访问说明符

我知道,通常,类的“对象”无法访问私有成员。 但是在复制构造函数的函数定义中,您使用对象来访问私有成员成员。 怎么会? 例如:- ...

4 关于访问说明符

我定义了一个Class Base 因此Base类的对象可以访问私有变量。 但它给了我一个编译器错误我在Base有私人访问权限。 编码时我很困惑,有什么不对? ...

5 关于访问说明符

我得到的输出为0 4.000000我想知道为什么在使用整数说明符时4.0变为zero ? 为什么不截断为4 ? ...

2016-03-14 19:11:57 2 47   c
8 访问说明符和性能

可以更改类成员的访问说明符(例如从私有到受保护)会影响类的性能(执行速度)吗? 如果是这样,请解释如何? ...

2018-02-02 15:18:14 2 67   c++
9 extern类说明符

如果我有这样的外部变量: 是的,声明等于: 并不等于: 是否与本地变量相同,写下这样的东西: 等于: 在这两种情况下,编译器是否默认设置了extern或auto ? ...

2014-10-14 10:45:37 4 165   c
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM