请问关于c的具体应用场景有哪些?

2026-04-29 02:172阅读0评论SEO资源
  • 内容介绍
  • 相关推荐

本文共计560个文字,预计阅读时间需要3分钟。

请问关于c的具体应用场景有哪些?

我们将C语言中的伪原创开头内容进行简化改写,不超过100字:

C语言,一种经典编程语言,以其简洁和高效著称,广泛应用于系统开发、嵌入式等领域。

我们将C#和 Linq2SQL与MS SQL Server数据库一起使用.
我们有一个mockdatacontext来进行一些单元测试.
在测试时,我们发现了两种不同的行为,具体取决于是使用“真实”还是“模拟”数据库.

场景1:真实数据库

数据库中有5条记录:

db = realDatabase db.InsertOnSubmit(new record) var count1 = db.getTable.Count() db.SubmitChanges() var count2 = db.getTable.Count()

count1 = 5
count2 = 6

场景2:模拟数据库

数据库中有5条记录:

db= mockDatabase db.InsertOnSubmit(new record) var count1 = db.getTable.Count() db.SubmitChanges() var count2 = db.getTable.Count()

count1 = 6
count2 = 6

*“模拟”数据库在调用SubmitChanges()之前已经知道新记录,因此它包含在计数中.为了测试,我们需要两个行为相同.

有没有其他人遇到这个问题,你能建议一个解决方案吗?

IMO,一个人试图在测试中模拟的常见错误.模拟不是模拟器.它不应该实现类似于原始的逻辑,它应该只返回硬编码结果.

请问关于c的具体应用场景有哪些?

如果模拟行为很复杂,您最终会测试模拟而不是业务代码.

我正在使用RhinoMocks,它看起来像这样:

// arrange IList<Record> testdata = new List<Record>() {a, b, c}; db = MockRepository.GenerateMock<IDatabase>(); db.Stub(x => db.getTable).Return(testdata); // act: call your unit under test // assert db.AssertWasCalled(x => x.InsertOnSubmit(Arg<Record>.Is.Anything)); db.AssertWasCalled(x => x.SubmitChanges());

它每次仍返回相同的列表.在许多情况下,这就足够了.您仍然可以在第二个getTable调用上返回其他数据:

db.Stub(x => db.getTable).Return(testdata1); db.Stub(x => db.getTable).Return(testdata2);

它总是特定于单个测试,但这使它变得如此简单.

编辑:

我不得不承认我不熟悉Linq2Sql.在我的例子中被模拟的调用是Linq2Sql调用,这可能不容易被嘲笑.您可能需要将其置于简单的DAL界面之后.然后你模拟这个界面.

本文共计560个文字,预计阅读时间需要3分钟。

请问关于c的具体应用场景有哪些?

我们将C语言中的伪原创开头内容进行简化改写,不超过100字:

C语言,一种经典编程语言,以其简洁和高效著称,广泛应用于系统开发、嵌入式等领域。

我们将C#和 Linq2SQL与MS SQL Server数据库一起使用.
我们有一个mockdatacontext来进行一些单元测试.
在测试时,我们发现了两种不同的行为,具体取决于是使用“真实”还是“模拟”数据库.

场景1:真实数据库

数据库中有5条记录:

db = realDatabase db.InsertOnSubmit(new record) var count1 = db.getTable.Count() db.SubmitChanges() var count2 = db.getTable.Count()

count1 = 5
count2 = 6

场景2:模拟数据库

数据库中有5条记录:

db= mockDatabase db.InsertOnSubmit(new record) var count1 = db.getTable.Count() db.SubmitChanges() var count2 = db.getTable.Count()

count1 = 6
count2 = 6

*“模拟”数据库在调用SubmitChanges()之前已经知道新记录,因此它包含在计数中.为了测试,我们需要两个行为相同.

有没有其他人遇到这个问题,你能建议一个解决方案吗?

IMO,一个人试图在测试中模拟的常见错误.模拟不是模拟器.它不应该实现类似于原始的逻辑,它应该只返回硬编码结果.

请问关于c的具体应用场景有哪些?

如果模拟行为很复杂,您最终会测试模拟而不是业务代码.

我正在使用RhinoMocks,它看起来像这样:

// arrange IList<Record> testdata = new List<Record>() {a, b, c}; db = MockRepository.GenerateMock<IDatabase>(); db.Stub(x => db.getTable).Return(testdata); // act: call your unit under test // assert db.AssertWasCalled(x => x.InsertOnSubmit(Arg<Record>.Is.Anything)); db.AssertWasCalled(x => x.SubmitChanges());

它每次仍返回相同的列表.在许多情况下,这就足够了.您仍然可以在第二个getTable调用上返回其他数据:

db.Stub(x => db.getTable).Return(testdata1); db.Stub(x => db.getTable).Return(testdata2);

它总是特定于单个测试,但这使它变得如此简单.

编辑:

我不得不承认我不熟悉Linq2Sql.在我的例子中被模拟的调用是Linq2Sql调用,这可能不容易被嘲笑.您可能需要将其置于简单的DAL界面之后.然后你模拟这个界面.