2017-07-18 3 views
1

を使用してインターフェイスの配列を注入する私はNUnitを初めて使い、テストオブジェクトのコンストラクタにInterfaceオブジェクトの配列を挿入する方法について質問します。例:NMock C#

Class Class1 
{ 
    private ITest[] iTests; 
    private ITest1 iTest1; 

    Class1(ITest1 iTest1, ITest[] iTests) 
    { 
     this.iTests = iTests; 
     this.iTest1 = iTest1; 
    } 
} 

[TestFixture()] 
class Class1UnitTest 
{ 
    private Mock<ITest1> iTest1; 
    private Class1 class1; 

    [SetUp] 
    public void setUp() 
    { 
     this.iTest1 = new Mock<ITest1>(); 
     class1 = new Class1 (this.iTest1.Objeсt, ????); 
    } 
} 

ユニットテストでITest []を注入する方法を教えてください。

ありがとうございました。

+0

でそれを呼び出すためにヘルパーメソッドを作成することができ、私はちょうど 'これを参照してください。 ITest1.Object'ではなく、ITest1ではない。コンストラクタに配列として渡したいものは何ですか?いくつかの例を挙げることができますか? –

+0

間違いを申し訳ありません私は質問に私の意図を編集しました。私は 'ITest []'をどのように注入するのかを知りたいと思います。まだ明確でない場合は教えてください –

+0

@VenuChitta配列を作成し、以前に作成したモックのようなモックを作成してください。 – Nkosi

答えて

1

配列を作成し、前に作成したモックのようにモックを挿入するだけです。

[TestFixture()] 
class Class1UnitTest { 
    private Mock<ITest1> iTest1; 
    private ITest[] iTests; 
    private Class1 class1; 

    [SetUp] 
    public void setUp() { 
     this.iTest1 = new Mock<ITest1>(); 

     var mock1 = new Mock<ITest>(); 
     var mock2 = new Mock<ITest>(); 
     var mock3 = new Mock<ITest>(); 

     this.iTests = new ITest[] { 
      mock1.Object, 
      mock2.Object, 
      mock3.Object, 
      //... 
     } 
     class1 = new Class1 (this.iTest1.Objeсt, this.iTests); 
    } 
} 

あなたも、コード

public T[] MockArray<T>(int length) where T : class { 
    return Enumerable.Range(0, length).Select(i => new Mock<T>().Object).ToArray(); 
} 

を乾燥して、私はあなたの配列が表示されていないテスト

this.iTests = MockArray<ITest>(5);