开源数据探索工具_开源实验:探索vcr-sharp进行Http记录和回放

开源数据探索工具

开源数据探索工具

I've always said that reading source code is as important as write it - especially as part of the learning process. You learn a ton about how other coders think and solve problems, plus you learn about lots of new libraries and methods you may not be familiar with.

我一直说,阅读源代码与编写源代码一样重要-尤其是在学习过程中。 您将学到很多其他程序员如何思考和解决问题的知识,并且还学习了许多您可能不熟悉的新库和方法。

Last week I noticed this tweet from Brendan Forster about an experiment he's working on. He is interesting in your feedback on his experiment and if you would use it.

上周,我注意到了来自Brendan Forster的有关他正在进行的实验的推文。 他对对实验反馈以及是否使用它都很有趣。

He's created a new library for .NET called vcr-sharp that is inspired by the vcr Ruby gem and the scotch .NET library.

他为.NET创建了一个名为vcr-sharp的.NET新库,该库的灵感来自于vcr Ruby gem和苏格兰威士忌.NET库

Again, he's made it clear he's just experimenting but I think this has some interesting potential.

同样,他明确表示他只是在尝试,但我认为这具有一些有趣的潜力。

Vcr-sharp lets you record and playback HTTP requests! In this example, WithCassette is an extension method on HttpClientFactory. That extension method sets up a DelgatingHandler to a ReplayingHandler. That ReplayingHandler "loads the cassette" and returns it as a cached response.

Vcr-sharp允许您记录和回放HTTP请求! 在此示例中,WithCassette是HttpClientFactory的扩展方法。 该扩展方法建立了一个DelgatingHandlerReplayingHandler 。 该ReplayingHandler“加载盒式磁带”,并将其作为缓存的响应返回。

using (var httpClient = HttpClientFactory.WithCassette("my-test-scenario"))
{
var request = new HttpRequestMessage(HttpMethod.Get, "http://www.iana.org/domains/reserved");
var response = await httpClient.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
body.ShouldContain("Example domains");
}

Also worth noting is that within the VCR-Sharp library Brendan uses an assertion library for .NET called "Shouldly." Shouldly has some interesting extension methods that let you express how you Assert within your Tests.

另外值得注意的是,在VCR-Sharp库中,Brendan在.NET中使用了一个称为“ Shouldly”断言库。 应该有一些有趣的扩展方法,这些方法可以让您表达在测试中如何断言。

They say - this is the old Assert way:

他们说-这是旧的Assert方法:

Assert.That(contestant.Points, Is.EqualTo(1337));

For your troubles, you get this message, when it fails:

如果遇到麻烦,您会收到以下消息:

Expected 1337 but was 0

They say - this is how it Should be:

他们说-这应该是这样的:

contestant.Points.ShouldBe(1337);

Which is just syntax, so far, but check out the message when it fails:

到目前为止,这只是语法,但是请在失败时检查消息:

contestant.Points should be 1337 but was 0

Another example:

另一个例子:

Assert.That(map.IndexOfValue("boo"), Is.EqualTo(2));    // -> Expected 2 but was 1
map.IndexOfValue("boo").ShouldBe(2);                    // -> map.IndexOfValue("boo") should be 2 but was 1

It makes tests very easy to read. A nice bit of syntactic sugar:

它使测试非常容易阅读。 语法糖:

[Fact]
public async Task AppendsNewRequestToCache()
{
Environment.SetEnvironmentVariable("VCR_MODE", "Cache");
var session = "append-second-request";

using (var httpClient = HttpClientFactory.WithCassette(session))
{
var request = new HttpRequestMessage(HttpMethod.Get, "https://www.iana.org/performance/ietf-statistics");
var response = await httpClient.SendAsync(request);
}

var cassette = await ReadCassetteFile(session);
cassette.http_interactions.Length.ShouldBe(2);
}

It also uses BenchmarkDotNet, which you may be familiar with. It allows you to mark methods as [Benchmark] methods and you'll get smart warming up, running, teardowns and statistics like this;

它还使用您可能熟悉的BenchmarkDotNet 。 它使您可以将方法标记为[Benchmark]方法,并且可以像这样聪明地进行预热,运行,拆卸和统计。

[Benchmark]
public async Task ReadFromCache()
{

using (var httpClient = HttpClientFactory.WithCassette("example-test"))
{
var request = new HttpRequestMessage(HttpMethod.Get, "http://www.iana.org/domains/reserved");
var response = await httpClient.SendAsync(request);
}
} Output:
        Method |     Mean |    Error |   StdDev |
-------------- |---------:|---------:|---------:|
ReadFromCache | 684.1 us | 3.154 us | 2.796 us |

I'd encourage you to check vcr-sharp out over at https://github.com/shiftkey/vcr-sharp, read the source code, and think about how you'd use it. I am sure Brendan would appreciate your thoughts and feedback in the GitHub Issues! Also check out how he uses Tests, Shouldly, and BenchmarkDotNet in his project and consider how you'd use them in yours!

我鼓励您在https://github.com/shiftkey/vcr-sharp上检查vcr-sharp ,阅读源代码,然后考虑如何使用它。 我相信Brendan会感谢您在GitHub Issues中的想法和反馈! 还要检查他如何在他的项目中使用Tests,Shouldly和BenchmarkDotNet,并考虑如何在自己的项目中使用它们!

翻译自: https://www.hanselman.com/blog/experiments-in-open-source-exploring-vcrsharp-for-http-record-and-playback

开源数据探索工具

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值