1

私はこの質問を書き直して、私が何をする必要があるかを明確にします。Rhino-Mockを使用してテストしようとしています:

    public IQueryable<TxRxMode> GetAllModes()
    {
        return m_context.TxRxModes.Where(txRxMode => txRxMode.Active);
    }

コードは次のとおりです。

var context = MockRepository.GenerateStub<IProjectContext>();

//Returns an empty list
context.Expect(c => c.TxRxModes.Where(Arg<Func<TxRxMode, bool>>.Is.Anything)).Return(new List<TxRxMode>().AsQueryable());

TxRxModesコンテキストのプロパティで、コードが呼び出されたときにIObjectSetIQueryable<TxRxModeのオブジェクトを返すようにします。return m_context.TxRxModes.Where(txRxMode => txRxMode.Active);

これを実行すると、Expectメソッド呼び出しはArgumentNullExceptionをスローします。

値をnullにすることはできません。パラメータ名:述語

私はもっ​​と簡単なものを試しました:

IObjectSet<TxRxMode> modes = MockRepository.GenerateStub<IObjectSet<TxRxMode>>();
context.Expect(c => c.TxRxModes).Return(modes);

しかし、これは私が呼び出すときにnull参照例外をスローします

return m_context.TxRxModes.Where(txRxMode => txRxMode.Active);

基本的に、これは私がモックしようとしている方法の一部なので、重要な質問は、このWhereステートメントをどのようにモックするかです。

4

1 に答える 1

1

実際にはグローバル静的メソッドはどこにあり、それをあざけるべきではありません。ただし、IEnumerableで動作するため、それをモックすることができます。

ただし、サイのモックでそれを行うのは面倒です。手動でモックを作成することをお勧めします(必要な場合)。

于 2010-02-01T02:52:19.047 に答える