記事一覧
MsTest
Assert
Assert.AreEqual(expected, actual, message)
AssertEx.DoesNotThrow(() => this.TestMethod());
AssertEx.Throws<ArgumentNullException>(() => this.TestItemCount());
DataSource
DataRow
DynamicData
Enum等の値によって処理が異なる場合、DynamicDataを使って引数に要素を渡すことにより、対象のパターンを網羅してテストが行える。
[TestMethod]
[DynamicData(nameof(GetHogeState), DynamicDataSourceType.Method)]
public void MethodUpdateTotalStudyCountNormalTest(HogeState hogeState)
{
switch (hogeState)
{
case hogeState.Initialized:
case hogeState.Started:
totalCount.Is(1);
break;
default:
totalCount.Is(1);
break;
}
}
private static IEnumerable<object[]> GetHogeState()
{
return DynamicDataProvider.GetValues<HogeState>();
}
Moq
SetUp
DbSetがSetUpできない
何も考えずにDbContextのDbSetをSetUpしようとするとコンパイルが通らない。
理由はDbSetがOverrideできないからで、MockでDbSetを使うには public virtual DbSet<T>が必要になる。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9TW9xJUUzJTgyJTkyJUU0JUJEJUJGJUUzJTgxJUEzJUUzJTgxJUE2RW50aXR5ZnJhbWV3b3JrJUUzJTgxJUFFJUUzJTgzJUEyJUUzJTgzJTgzJUUzJTgyJUFGJUUzJTgyJTkyJUU0JUJEJTlDJUU2JTg4JTkwJUUzJTgxJTk5JUUzJTgyJThCJUUzJTgxJUFCJUUzJTgxJUFGJUVGJUJDJTlGJUUzJTgwJTkwJUU1JThEJTk4JUU0JUJEJTkzJUUzJTgzJTg2JUUzJTgyJUI5JUUzJTgzJTg4JUUzJTgwJTkxJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz0xNWUxYWU4OTUxOTgwNGJkYjE4OTA1MzRmNGQ4YzZhNw&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBpbnV0Y2gmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTg2ZTZhMDcxMTYwM2VlNTA5ZjU0MzkwMmEyOGU4NjY3&blend-x=142&blend-y=486&blend-mode=normal&s=ed1cd86bfd2cc77327059c17db2a486b)
Moqを使ってEntityframeworkのモックを作成するには?【単体テスト】 - Qiita
C#の単体テスト用モックフレームワークといえば、Moqがデフォルトですが、Entityframeworkとの相性があまりよくありませんでした。DbContextのモック実装を用意したり、実コードと…
Where内の条件式のMock用の書き方が分からない
It.IsAny()で抽象化する。
Items.Count(x => x.Name == "hoge");
dbContextMock.Setup(x => x.Items.Count(It.IsAny<Func<TestEntity, bool>>())).Returns(1);
Mockのプロパティを利用可能にする
testMock.SetupProperty(x => x.TestProperty, "hoge")
//すべてのプロパティを利用する場合
testMock.SetupAllProperties();
public Class Test1
{
public string TestProperty { get; set; }
}
public Class Test2
{
private Test1 test1;
public Test2
{
this.test1 = new Test1();
}
public void TestMethod
{
this.TestProperty = "fuga";
}
}
var Test1Mock = new Mock<Test1>();
var Test2 = new Test2();
testMock.SetupProperty(x => x.TestProperty, "hoge")
AssertEx.DoesNotThrow(() => .TestMethod());
testMock.Object.TestProperty.Is("fuga")
コメント