2011-09-13 22 views
2

現在、(Force.com IDEを使用して)apexを学習していますが、カスタムコントローラのテストを書くときに問題が発生します。Apexエラー:「保存エラー:メソッドが存在しないか、不正なシグニチャ」

public with sharing class CustomController { 
    private List<TestObject__c> objects; 

    public CustomController() { 
     objects = [SELECT id, name FROM TestObject__c]; 
    } 

    public List<TestObject__c> getObjects() { 
     return objects; 
    } 
} 

とテストクラスは次のとおりです:次のように

コントローラクラスがある

Save error: Method does not exist or incorrect signature: [CustomController].getObjects()

を:私はというエラーを取得しています objects = controller.getObjects();行で

@isTest 
private class ControllerTest { 
    static testMethod void customControllerTest() { 
     CustomController controller = new CustomController(); 

     System.assertNotEquals(controller, null); 

     List<TestObject__c> objects; 

     objects = controller.getObjects(); 

     System.assertNotEquals(objects, null);  
    } 
} 

なぜこのエラーが出るのですか?

+0

最初のクラスは間違いなく保存されましたか?これに目立つものは何も見えません。たとえば、私は静かなメソッドを呼び出そうとしましたが、実際には静的なキーワードを使用していないなど、何かばかげたやり方でメッセージが表示されます。 –

+0

それは、クラスをTestObject__cの代わりにContactを使用してExecute Anonymousに貼り付けてから、その新しいインスタンスでgetObjectsを呼び出すとエラーなく動作します。 –

+0

私はコードに他のエラーはありませんでした。ファイルはローカルに保存されますが、サーバーには保存されません(おそらく、テストが通過しなかったためです)。私はまた、Execute Anonymousで試してみるとき、まったく同じメッセージを受け取ります。 – Apexer

答えて

3

素敵な速記:

public List<TestObject__c> objects {get; private set;} 

それはあなたのためのgetter/setterメソッドを作成し、芋きれいに見えます。あなたの現在の問題に関しては、そうです - 実稼働環境にコードを直接保存するのは難しく、特にテストクラスを別々のファイルに保存するのは難しいです。

sandbox/dev組織でをデプロイする(サーバー - Force.com IDEに展開する)ことをお勧めします。しかし、生産に直接保存しなければならない場合は、テストメソッドとクラスを組み合わせます。しかし、長期的には、専用のテストクラスの上に@testを置くことが最善の方法です。この方法であなたの貴重なリソースを消費することはありません。

+0

ええ、私はすぐ後でそれにうんざりし、ちょうどあなたが説明したものをかなりしました。 – Apexer

関連する問題