2017-02-28 5 views
0

私はユニットテストプロジェクトを行って、コントローラの読み取りメソッドをテストしています。私はリポジトリを嘲笑しようとしていますが、問題が発生しています。ユニットテストのモックによるエラーasp.net MVC

すべてのリポジトリを含むApp Repositoryがあります。そしてユーザーのための別のリポジトリ:コントローラで

var repositoriesMock = new Mock<IAppRepositories>(); 
var userMock = new Mock<UserRepository>(); 
repositoriesMock.SetupGet(x => x.Users).Returns(
        partnerMock.Object 
       ); 

userMock.SetupGet(x => x.GetUserDto(false, 1)).Returns(
        new List<GeschaeftspartnerDto> {user1, user2}.AsQueryable() 
       ); 

public ActionResult Read([DataSourceRequest] DataSourceRequest request) 
{ 
    var list = this.AppRepositories.Users.GetUserDto(false, 1).ToList(); 

} 

を私は何が起こっているかuerMock.SetupGet

Expression is not a property access: x => x.GetUserDto(False, 1)

にエラーを受け取るのですか?なぜこのエラーが発生していますか?

+0

'GetUserDto'とその宣言型' UserRepository'の定義を表示します。 UserRepositoryにバッキングインターフェイスがありますか? – Nkosi

+0

あなたが何を意味するのか分かりませんでした。 –

+0

適切に手助けをするために、オブジェクトに関する詳細を提供していません。問題を再現して解決策を見つけるために使用できる[mcve]を提供してください。 – Nkosi

答えて

0

Mock.SetupGetの代わりにMock.Setupを使用してみてください。

+0

今、別のエラーが表示されます:非仮想(VBでオーバーライド可能)メンバーの無効な設定:x => x.GetUserDto(False、1) –

+1

UserRepository.GetUserDtoを仮想としてマークするか、具体的なクラスではなくユーザーリポジトリの –

+0

どうすればいいですか? –

関連する問題