0

以下に説明するように、nunitでMoqを使用して汎用ヘルパーメソッドを作成しようとしました

public void PrepareWebRequest<T>() where T : new()
    {            
        httpCommunicator = new Mock<IHttpCommunicator>();
        httpCommunicator.Setup(x => x.Post(It.IsAny<Object>(),
                                                      It.IsAny<string>())).Throws<T>();

        service = new ApiClient(httpCommunicator.Object);
    }

しかし、これにより次のエラーが発生します。

型 'T' は、ジェネリック型またはメソッド 'Moq.Language.IThrows.Throws()' で型パラメーター 'TException' として使用できません。'T' から 'System.Exception' へのボックス変換や型パラメーターの変換はありません。

Moq でジェネリック メソッドを使用しないことでこれをリファクタリングできることはわかっていますが、何が間違っているのかを本当に知りたいです。

よろしくラスムス

4

1 に答える 1

0

問題は、Where 句の例外の欠落でした。する必要があります

public void PrepareWebRequest<T>() where T : Exception, new()
{            
    httpCommunicator = new Mock<IHttpCommunicator>();
    httpCommunicator.Setup(x => x.Post(It.IsAny<Object>(),
                                                  It.IsAny<string>())).Throws<T>();

    service = new ApiClient(httpCommunicator.Object);
}
于 2012-05-07T18:55:13.287 に答える