TestBase.AdoNet
5.0.0
TestBase.AdoNet
TestBase.FakeDb
------------------
Fake and verify AdoNet queries and commands
```
- fakeDbConnection.SetupForQuery(IEnumerable<TFakeData>; )
- fakeDbConnection.SetupForQuery(IEnumerable<Tuple<TFakeDataForTable1,TFakeDataForTable2>> )
- fakeDbConnection.SetupForQuery(fakeData, new[] {"FieldName1", FieldName2"})
- fakeDbConnection.SetupForExecuteNonQuery(rowsAffected)
- fakeDbConnection.ShouldHaveUpdated("tableName", [Optional] fieldList, whereClauseField)
- fakeDbConnection.ShouldHaveSelected("tableName", [Optional] fieldList, whereClauseField)
- fakeDbConnection.ShouldHaveUpdated("tableName", [Optional] fieldList, whereClauseField)
- fakeDbConnection.ShouldHaveDeleted("tableName", whereClauseField)
- fakeDbConnection.ShouldHaveInvoked(cmd => predicate(cmd))
- fakeDbConnection.ShouldHaveExecutedStoredProcedure("name")
- fakeDbConnection.ShouldHaveXXX().ShouldHaveParameter("name", value)
- fakeDbConnection.Verify(x=>x.CommandText.Matches("Insert [case] .*") && x.Parameters["id"].Value==1)
```
TestBase.RecordingDb
--------------------
* `new RecordingDbConnection(IDbConnection)` helps you profile Ado.Net Db calls
See also
- TestBase
- TestBase.Mvc
- TestBase.AdoNet
- Serilog.Sinks.ListOfString
- Extensions.Logging.ListOfString
Install-Package TestBase.AdoNet -Version 5.0.0
dotnet add package TestBase.AdoNet --version 5.0.0
<PackageReference Include="TestBase.AdoNet" Version="5.0.0" />
paket add TestBase.AdoNet --version 5.0.0
#r "nuget: TestBase.AdoNet, 5.0.0"
TestBase gives you a flying start with
- fluent assertions that are easy to extend
- sharp error messages
- tools to help you test with "heavyweight" dependencies on
- AspNet.Mvc or AspNetCore Contexts
- HttpClient
- Ado.Net
- Streams & Logging
- Mix & match with your favourite test runners and assertions.
TestBase.AdoNet
TestBase.FakeDb
Fake and verify AdoNet queries and commands
- fakeDbConnection.SetupForQuery(IEnumerable<TFakeData>; )
- fakeDbConnection.SetupForQuery(IEnumerable<Tuple<TFakeDataForTable1,TFakeDataForTable2>> )
- fakeDbConnection.SetupForQuery(fakeData, new[] {"FieldName1", FieldName2"})
- fakeDbConnection.SetupForQuerySingleColumn(new []{"1","row2"})
- fakeDbConnection.SetupForQuerySingleScaler("Scalar")
- fakeDbConnection.SetupForExecuteNonQuery(rowsAffected)
- fakeDbConnection.ShouldHaveUpdated("tableName", [Optional] fieldList, whereClauseField)
- fakeDbConnection.ShouldHaveSelected("tableName", [Optional] fieldList, whereClauseField)
- fakeDbConnection.ShouldHaveUpdated("tableName", [Optional] fieldList, whereClauseField)
- fakeDbConnection.ShouldHaveDeleted("tableName", whereClauseField)
- fakeDbConnection.ShouldHaveInvoked(cmd => predicate(cmd))
- fakeDbConnection.ShouldHaveExecutedStoredProcedure("name", [Optional] predicate)
- fakeDbConnection.ShouldHaveExecutedStoredProcedureWithParameter("name", predicateOnParameter)
- fakeDbConnection.ShouldHaveXXX().ShouldHaveParameter("name", value)
- fakeDbConnection.Verify(x=>x.CommandText.Matches("Insert [case] .*") && x.Parameters["id"].Value==1)
TestBase.RecordingDb
new RecordingDbConnection(IDbConnection)
helps you profile Ado.Net Db calls
Chainable fluent assertions get you to the point concisely:
UnitUnderTest.Action()
.ShouldNotBeNull()
.ShouldEqualByValueExceptFor(new {Id=1, Descr=expected}, ignoreList )
.Payload
.ShouldMatchIgnoringCase("I expected this")
.Should(someOtherPredicate);
.Items
.ShouldAll(predicate)
.ShouldContain(item)
.ShouldNotContain(predicate)
.Where(predicate)
.SingleOrAssertFail()
.ShouldEqualByValue().ShouldEqualByValueExceptFor(...).ShouldEqualByValueOnMembers()
work with all kinds of object and collections, and report what differed.
string.ShouldMatch(pattern).ShouldNotMatch().ShouldBeEmpty().ShouldNotBeEmpty()
.ShouldNotBeNullOrEmptyOrWhiteSpace().ShouldEqualIgnoringCase()
.ShouldContain().ShouldStartWith().ShouldEndWith().ShouldBeContainedIn().ShouldBeOneOf().ShouldNotBeOneOf()
numeric.ShouldBeBetween().ShouldEqualWithTolerance()....GreaterThan....LessThan...GreaterOrEqualTo ...
ienumerable.ShouldAll().ShouldContain().ShouldNotContain().ShouldBeEmpty().ShouldNotBeEmpty() ...
stream.ShouldHaveSameStreamContentAs().ShouldContain()
value.ShouldBe().ShouldNotBe().ShouldBeOfType().ShouldBeAssignableTo()...
See also
TestBase gives you a flying start with
- fluent assertions that are easy to extend
- sharp error messages
- tools to help you test with "heavyweight" dependencies on
- AspNet.Mvc or AspNetCore Contexts
- HttpClient
- Ado.Net
- Streams & Logging
- Mix & match with your favourite test runners and assertions.
TestBase.AdoNet
TestBase.FakeDb
Fake and verify AdoNet queries and commands
- fakeDbConnection.SetupForQuery(IEnumerable<TFakeData>; )
- fakeDbConnection.SetupForQuery(IEnumerable<Tuple<TFakeDataForTable1,TFakeDataForTable2>> )
- fakeDbConnection.SetupForQuery(fakeData, new[] {"FieldName1", FieldName2"})
- fakeDbConnection.SetupForQuerySingleColumn(new []{"1","row2"})
- fakeDbConnection.SetupForQuerySingleScaler("Scalar")
- fakeDbConnection.SetupForExecuteNonQuery(rowsAffected)
- fakeDbConnection.ShouldHaveUpdated("tableName", [Optional] fieldList, whereClauseField)
- fakeDbConnection.ShouldHaveSelected("tableName", [Optional] fieldList, whereClauseField)
- fakeDbConnection.ShouldHaveUpdated("tableName", [Optional] fieldList, whereClauseField)
- fakeDbConnection.ShouldHaveDeleted("tableName", whereClauseField)
- fakeDbConnection.ShouldHaveInvoked(cmd => predicate(cmd))
- fakeDbConnection.ShouldHaveExecutedStoredProcedure("name", [Optional] predicate)
- fakeDbConnection.ShouldHaveExecutedStoredProcedureWithParameter("name", predicateOnParameter)
- fakeDbConnection.ShouldHaveXXX().ShouldHaveParameter("name", value)
- fakeDbConnection.Verify(x=>x.CommandText.Matches("Insert [case] .*") && x.Parameters["id"].Value==1)
TestBase.RecordingDb
new RecordingDbConnection(IDbConnection)
helps you profile Ado.Net Db calls
Chainable fluent assertions get you to the point concisely:
UnitUnderTest.Action()
.ShouldNotBeNull()
.ShouldEqualByValueExceptFor(new {Id=1, Descr=expected}, ignoreList )
.Payload
.ShouldMatchIgnoringCase("I expected this")
.Should(someOtherPredicate);
.Items
.ShouldAll(predicate)
.ShouldContain(item)
.ShouldNotContain(predicate)
.Where(predicate)
.SingleOrAssertFail()
.ShouldEqualByValue().ShouldEqualByValueExceptFor(...).ShouldEqualByValueOnMembers()
work with all kinds of object and collections, and report what differed.
string.ShouldMatch(pattern).ShouldNotMatch().ShouldBeEmpty().ShouldNotBeEmpty()
.ShouldNotBeNullOrEmptyOrWhiteSpace().ShouldEqualIgnoringCase()
.ShouldContain().ShouldStartWith().ShouldEndWith().ShouldBeContainedIn().ShouldBeOneOf().ShouldNotBeOneOf()
numeric.ShouldBeBetween().ShouldEqualWithTolerance()....GreaterThan....LessThan...GreaterOrEqualTo ...
ienumerable.ShouldAll().ShouldContain().ShouldNotContain().ShouldBeEmpty().ShouldNotBeEmpty() ...
stream.ShouldHaveSameStreamContentAs().ShouldContain()
value.ShouldBe().ShouldNotBe().ShouldBeOfType().ShouldBeAssignableTo()...
See also
Dependencies
-
.NETFramework 4.5
- ExpressionToCodeLib (>= 2.7.0)
- Newtonsoft.Json (>= 7.0.1)
- TestBase (>= 4.1.4.3)
-
.NETStandard 2.0
- TestBase (>= 4.1.4.3)
Used By
NuGet packages (1)
Showing the top 1 NuGet packages that depend on TestBase.AdoNet:
Package | Downloads |
---|---|
FixtureBase
Don't spend hours writing code to mock a dozen dependencies, and more hours debugging it. Just write your test code, and let FixtureBase create the dependencies for you.
FixtureBase constructs your UnitUnderTest to test your codebase end-to-end, with external dependencies auto-faked and automatically injected in just the right place; even constructor dependencies that are several layers deep.
You just write your tests:
```
public class FixtureBaseExample : FixtureBaseWithDbAndHttpFor<AUseCase>
{
[Fact]
public void UUTSendsDataToDb()
{
var newDatum = new Datum{Id=99, Name="New!" };
UnitUnderTest.InsertDb(newDatum);
Db.ShouldHaveInserted("Data",newDatum);
}
[Fact]
public void UUTreturnsDataFromDbQuerySingleColumn()
{
var dbData = new[] { "row1", "row2", "row3", "row4"};
Db.SetUpForQuerySingleColumn(dbData);
UnitUnderTest.FromDbStrings().ShouldEqualByValue(dbData);
}
[Fact]
public async Task UUTGetHttpReturnsDataFromService()
{
var contentFromService = "IGotThis!";
HttpClient
.Setup(m => true)
.Returns(new HttpResponseMessage(HttpStatusCode.OK) {Content = new StringContent(contentFromService)});
(await UnitUnderTest.GetHttp()).ShouldBe(contentFromService);
HttpClient.Verify(x=>x.Method==HttpMethod.Get);
}
}
```
The included examples demonstrate FixtureBases for applications which depend on Ado.Net IDbConnections and on HttpClient network connections.
- To create your own FixtureBase with your own preferred Fakes, see the
examples at
<https://github.com/chrisfcarroll/ActivateAnything/blob/master/FixtureBase/FixtureExample.cs.md>
- For how it's done, see
<https://github.com/chrisfcarroll/ActivateAnything/blob/master/FixtureBase/FixtureBase.cs>
Construction is done by
- [ActivateAnything](https://www.nuget.org/packages/ActivateAnything)
Faking is done by
- [TestBase.AdoNet](https://www.nuget.org/packages/TestBase.AdoNet)
- [TestBase.HttpClient.Fake](https://www.nuget.org/packages/TestBase.HttpClient.Fake)
For more tools focussed on cutting the cost of unit testing, see also:
- [TestBase](https://www.nuget.org/packages/TestBase)
- [TestBase.AspNetCore.Mvc](https://www.nuget.org/packages/TestBase.AspNetCore.Mvc)
- [TestBase-Mvc](https://www.nuget.org/packages/TestBase-Mvc)
- [TestBase.AdoNet](https://www.nuget.org/packages/TestBase.AdoNet)
- [TestBase.HttpClient.Fake](https://www.nuget.org/packages/TestBase.HttpClient.Fake)
- [Serilog.Sinks.ListOfString](https://www.nuget.org/packages/Serilog.Sinks.Listofstring)
- [Extensions.Logging.ListOfString](https://www.nuget.org/packages/Extensions.Logging.ListOfString)
|
GitHub repositories
This package is not used by any popular GitHub repositories.
Version History
Version | Downloads | Last updated |
---|---|---|
5.0.0 | 757 | 12/20/2018 |
4.1.5 | 453 | 11/21/2018 |
4.1.4.3 | 320 | 11/20/2018 |
4.1.2.4 | 346 | 10/16/2018 |
4.1.0 | 456 | 4/3/2018 |
4.0.9 | 593 | 3/23/2018 |
4.0.7 | 466 | 3/22/2018 |
4.0.6.2 | 455 | 3/9/2018 |
4.0.6.1 | 493 | 3/7/2018 |
4.0.5.2 | 471 | 3/2/2018 |
4.0.4 | 448 | 2/25/2018 |
4.0.3 | 523 | 2/25/2018 |
4.0.2 | 406 | 2/24/2018 |
4.0.1 | 465 | 2/24/2018 |