我有一个类依赖于Windows.Web.Http(Windows 10 UAP App)中的HttpClient.我想进行单元测试,因此我需要"模拟"HttpClient来设置Get-Call应返回的内容.我开始使用HttpClient进行"简单"的单元测试,使用手写模拟的IHttpFilter和IHttpContent.它没有按预期工作,我在Test-Explorer中得到一个InvalidCastException.
单元测试看起来像:
[TestMethod]
public async Task TestMockedHttpFilter()
{
MockedHttpContent mockedContent = new MockedHttpContent("Content from MockedHttpContent");
MockedHttpFilter mockedHttpFilter = new MockedHttpFilter(HttpStatusCode.Ok, mockedContent);
HttpClient httpClient = new HttpClient(mockedHttpFilter);
var resultContentTask = await httpClient.SendRequestAsync(new HttpRequestMessage(HttpMethod.Get, new Uri("http://dontcare.ch"))).AsTask().ConfigureAwait(false);
// Test stops here, throwing System.InvalidCastException: Specified cast is not valid
// Code not reached...
var result = await resultContentTask.Content.ReadAsStringAsync();
Assert.AreEqual("Content from MockedHttpContent", result);
}
Run Code Online (Sandbox Code Playgroud)
我在MockedHttpFilter中实现了IHttpFilter:
public class MockedHttpFilter : IHttpFilter
{
private HttpStatusCode _statusCode;
private IHttpContent _content;
public MockedHttpFilter(HttpStatusCode statusCode, IHttpContent content) …Run Code Online (Sandbox Code Playgroud) 我正在使用 GraphDB Free,并且正在尝试使用 sparql 将一些三元组插入到商店中。查询看起来像一个简单的 INSERT:
//Some Prefixes
INSERT DATA { subject predicate object }
Run Code Online (Sandbox Code Playgroud)
我使用 Postman 将请求正文中的查询 POST 到 SPARQL 端点,并使用 dotNetRdf 将查询提交到代码中的 SPARQL 端点。
我在上述两种方式中都收到以下错误:
MALFORMED QUERY: Encountered " "insert" "INSERT "" at line 5, column 1.
Was expecting one of:
"base" ...
"prefix" ...
"select" ...
"construct" ...
"describe" ...
"ask" ...
Run Code Online (Sandbox Code Playgroud)
在 SPARQL 表单中的 Workbench 中提交相同的 INSERT DATA { ... } 时按预期工作,因此 INSERT 没问题。
在文档GraphDB Sparql Comliance中提到支持 SPARQL 1.1 更新(包括插入数据)。Sparql 端点是否不支持提到的 Spaqrl 1.1 UPDATE …