2017-09-05 5 views
0

私が持っている問題を投げる:部品番号DbContext非同期テストこのテストでエラー

[Test] 
    public async Task Add_async_vaild_test_entity_to_database_should_be_added() 
    { 
     // Setup Moq 
     var mockSet = new Mock<DbSet<SingleChoiseTest>>(); 
     var mockContext = new Mock<NoezaTestContext>(); 
     mockContext.Setup(m => m.SingleChoiseTests).Returns(mockSet.Object); 

     // Perform action 
     var operations = new SingleChoiseTestOperations(mockContext.Object); 
     await operations.AddSingleChoiseTest(new SingleChoiseTest("question", new Answer("d1", false), 
      new Answer("d2", false), new Answer("d3", false), new Answer("d4", true))); 

     mockSet.Verify(t => t.Add(It.IsAny<SingleChoiseTest>()), Times.Once); 
     mockContext.Verify(m => m.SaveChangesAsync(), Times.Once); 
    } 

私はこの機能をテストしています:

public async Task AddSingleChoiseTest(SingleChoiseTest singleChoiseTest) 
    { 
     if (singleChoiseTest == null) 
      throw new NullReferenceException("Test cannot be null."); 

     if (!singleChoiseTest.IsValid()) 
     { 
      throw new ArgumentException("Test is not vaild."); 
     } 

     using (_context) 
     { 
      _context.SingleChoiseTests.Add(singleChoiseTest); 
      await _context.SaveChangesAsync(); 
     } 
    } 

私はそれが例外の下に投げテストを実行すると: System.NotSupportedException:非仮想(VBでオーバーライド可能)メンバの設定が無効です。m => m.SingleChoiseTests

答えて

0

エラーが表示されているため、会員番号virtual

SingleChoiseTestsを仮想化する必要があります。

+0

オハイオ州、私は理解しています、ありがとう! –