solid - 如何使用@inrupt/solid-client 模拟容器?
问题描述
如果我正在使用@inrupt/solid-client
试图从容器中读取的 npm 包编写代码的单元测试,我如何模拟该容器?
解决方案
从技术上讲,容器是一个常规资源,它包含的每个资源都有一个事物,以及一个由容器自己的指向它们的 URL 标识的事物。
因此,以下代码应该可以解决问题:
// We're going to mock a Container at https://vincentt.inrupt.net/public/,
// that contains one Resource at https://vincentt.inrupt.net/public/child-one.ttl.
const containerUrl = "https://vincentt.inrupt.net/public/";
// Add a Thing for the child at
// https://vincentt.inrupt.net/public/child-one.ttl:
let childOneListing = createThing({ url: containerUrl + "child-one.ttl" });
childOneListing = addUrl(childOneListing, rdf.type, ldp.Resource);
childOneListing = addDatetime(childOneListing, dct.modified, new Date());
// Create a Thing identified by the Container's own URL,
// pointing to the Things representing its children:
let childrenIndex = createThing({ url: containerUrl });
childrenIndex = addUrl(childrenIndex, rdf.type, ldp.BasicContainer);
childrenIndex = addUrl(childrenIndex, rdf.type, ldp.Container);
// Add child-one.ttl to this index:
childrenIndex = addUrl(childrenIndex, ldp.contains, childOneListing);
// Now initialise a mock Resource for this Container for use in our unit test,
// and add the index and the child Resources' Things:
let mockContainer = mockSolidDatasetFrom(containerUrl);
mockContainer = setThing(mockContainer, childrenIndex);
mockContainer = setThing(mockContainer, childOneListing);
可以在此处找到具有上述代码的 CodeSandbox:https ://codesandbox.io/s/ancient-wood-3u8m3?fontsize=14&hidenavigation=1&theme=dark
推荐阅读
- python - Tensorflow ImportError:DLL加载失败:找不到指定的模块
- javascript - JavaScript 日期转换导致浏览器和节点 js 的值不同
- java - 如何将绝对文件路径传递给 IFile
- java - 链接数据和 ComboBox 项的最佳方式
- php - 需要在登录屏幕后执行一个功能
- python-3.x - 在同一会话上从 pyspark 运行多个配置单元查询
- amazon-web-services - 指定 API Gateway id 而不是使用“随机”id
- angularjs - AngularJS奇怪的流程
- reactjs - 我如何从 reactjs 中的 api url usinf fetch 获取响应数据
- python - Pandas DataFrame 有多行而不是多列