public async Task BasicMock() { // モックオブジェクトを生成 var targetMock = new Mock <ITarget>(); ITarget target = targetMock.Object; // モック化対象のオブジェクトを直接取得も可 //ITarget target = Mock.Of<ITarget>(); // 特定引数に対して固定値を返却するモック // モック対象: public int Add(int x, int y) targetMock.Setup(o => o.Add(1, 2)).Returns(3); // テスト Assert.Equal(3, target.Add(1, 2)); Assert.Equal(0, target.Add(9, 9)); // 引数不一致の場合は既定値になる // 特定引数に対して固定値を返却するモック(非同期) // モック対象: public Task<int> AddAsync(int x, int y) targetMock.Setup(o => o.AddAsync(1, 2)).ReturnsAsync(3); // テスト Assert.Equal(3, await target.AddAsync(1, 2)); Assert.Equal(0, await target.AddAsync(9, 9)); // 引数不一致の場合は既定値になる // 任意引数に対して固定値を返却するモック // モック対象: public bool Send(string message) targetMock.Setup(o => o.Send(It.IsAny <string>())).Returns(true); // テスト Assert.True(target.Send("abc")); Assert.True(target.Send("12345")); }