1
A
回答
2
你必須模擬你的數據庫層。同樣,你也可以模擬Repositor層而不是數據庫層。
[TestClass]
public class TestCommandServiceTests
{
private readonly TestService _testService;
private readonly ITestRepositor _testRepository;
private readonly Mock<IDatabaseLaye> _mock;
[SetUp]
public void Setup()
{
_mock = new Mock<IDatabaseLayer>();
_testRepository = new TestRepository(_mock);
_testService = new TestService(_testRepository);
}
[Test]
public void TestMethod_ValidRequest_ShouldTestSuccessfully()
{
// Arrange
var request = new TestMethodRequest();
this._mock.Setup(c => c.TestSPMethod(null)).Returns(1000);
// Act
var response = _testService.TestMethod(request);
// Assert
Assert.IsNotNull(response);
Assert.AreEqual(1000, response.Id);
}
}
1
當然,你可以嘲笑數據庫(你甚至應該說,教材)。但是這很快變得非常麻煩,特別是當複雜的數據庫限制發揮時。
在實踐中,擁有本地測試數據庫(例如,如果可能,使用SQLite或MS SQL CE的內存)並測試整個「持久性堆棧」(在您的情況下:命令,存儲庫和數據庫)一氣呵成。這是書The Art of Unit Testing中推薦的方法,我發現它在實踐中非常有用。
相關問題
- 1. 單元測試用存根和模擬
- 2. 單元測試中的「模擬」命令行參數
- 3. 模擬的類在單元測試
- 4. PHP單元存儲庫測試案例的模擬雄辯模型
- 5. 嘲笑單元測試中使用的LinqToSql存儲庫內存
- 6. 單元測試kill命令
- 7. 模擬單元測試
- 8. 單元測試:模擬BundleTable.Bundles
- 9. 單元測試模擬法
- 10. 單元測試和模擬
- 11. 單元測試模擬Url.Action
- 12. 單元測試模擬HttpActionContext
- 13. 單元測試存儲庫。 NHibernate
- 14. 爲單元測試創建存儲庫
- 15. 單元測試NHibernate存儲庫
- 16. 單元測試:在父測試類中生成被測單元的模擬
- 17. 單元測試Azure表存儲類
- 18. 單測試類模擬器
- 19. 單元測試nHibernate存儲庫 - 如何添加到存儲庫?
- 20. 單元測試使用Spring Security的JPA存儲庫
- 21. 單元測試 - 存儲SqlDataReader
- 22. 蟒蛇模擬庫 - 修補類,而單元測試
- 23. C++單元測試測試,使用模板測試類
- 24. NUnit - 模擬存儲庫和虛擬數據測試
- 25. 存儲庫模式,NHibernate和單元測試
- 26. ASP.NET MVC單元測試與存儲庫模式
- 27. 單元測試EF存儲庫模式與Moq
- 28. 單聲道命令行單元測試
- 29. Phalcon - 模擬單元測試模型
- 30. 單元測試 - 無法從存儲庫類訪問方法
你在「命令類」中有什麼邏輯?他們使用知識庫嗎?他們是否直接撥打數據庫? –