我正在寻找一种复制window.document对象的方法,以便我可以在非浏览器环境中运行jQuery。
我的目标是在.NET javascript解释器的帮助下,使用MSTest执行一组javascript单元测试。我想让这些javascript单元测试与其余的C#测试一起运行。
到目前为止,使用解释器的简单单元测试工作正常并且行为完美,然而,由于非浏览器环境,抛出jQuery和浏览器对象的使用并不起作用。我搜索过,找不到任何我可以使用的模拟/假文档对象。
答案 0 :(得分:0)
它不仅仅是文档对象。 Jquery与浏览器基础架构密切相关,需要完整的DOM,回调,CSS支持等。
我在clr世界中找不到一个等价物,但我已经成功在htmlUnit / rhino上运行jquery。
那么,你怎么用呢?最简单的方法是创建一个Java命令行应用程序,它将htmlUnit和Rhino作为无头模拟浏览器运行,并注入要在命令行上运行的jsUnit测试。
如果您想要更好的集成,那么您可以尝试在IKVM上运行htmlUnit和Rhino。这样您就可以直接从c#测试中触发测试。
另一种是使用Selenium Webdriver / OpenQA。它有一个C#接口。然后,您可以针对真实浏览器或无头等效项运行测试。这是我使用的方法。正在开发我对Chrome运行,所以我可以看到什么打破。然后我针对htmlUnit / Rhino运行它以进行持续集成测试。
答案 1 :(得分:0)
如果您想在MSTest中运行JavaScript单元测试,那么您应该查看Chutzpah。它与Visual Studio集成,并在Test Explorer中显示测试和结果(与常规C#单元测试相同的面板)。它支持QUnit,Jasmine和Mocha。它使用PhantomJS无头浏览器,因此它处理DOM等。
有一个命令行测试运行器,它接受一个html文件或一个js文件,它有一个VS上下文菜单项,用于在选定文件中运行测试。
Chutzpah Test Adapter for the Test Explorer
Chutzpah Test Runner Context Menu Extension
至于嘲笑文件。我建议您在测试之前在代码中创建所需的任何DOM元素。 PhantomJS提供了一个DOM,因此当测试在Chutzpah运行时,你的jQuery代码将能够获取你的元素。
我发现它非常实用。