Kas*_*ska 6 javascript ajax jquery unit-testing jasmine
我以前从未使用过 Jasmine,但我正在从事的这个小项目需要我。无法完全弄清楚,任何帮助将不胜感激。我查看了各种教程并对问题进行了搜索,但对此不熟悉并无济于事。
JS源文件
> $(document).ready(function(){
>
>
> $.ajax({ type: 'GET', dataType: "json", url: "db.php/realmadrids",
> success: showResponse, error: showError });
>
>
>
>
>
>
> console.debug("error"); function showResponse(responseData){
>
> //$("#get1").click(function getPlayers(responseData) {
> console.log('Image is clicked'); console.log(responseData);
> $.each(responseData.realmadrid, function(index, realmadrid){
> console.log(' is ');
> $("#playercontentRealMadrid").append("</br><strong> Full Name: </strong>" +realmadrid.PlayerName+ " "+realmadrid.PlayerLastName+"
> </br> <strong>Player Position: </strong>" +realmadrid.PlayerPosition+"
> </br><strong>Player Age: </strong>" +realmadrid.Age+"
> </br><strong>Player Height: </strong>" +realmadrid.Height+"
> </br><strong>Player Weight: </strong>" +realmadrid.Weight+"
> </br><strong>Team Name: </strong>" +realmadrid.TeamName+"</br>");
>
> console.log('Data should output'); // }); });
>
> console.log(responseData);
> }
> console.debug("hello");
>
> function showError(){ alert("Sorry, but something went wrong. Fix
> it!!!!") }
>
> });
Run Code Online (Sandbox Code Playgroud)
这是我的测试代码:
Run Code Online (Sandbox Code Playgroud)//Test Suite describe("Spy on my own AJAX call", function(){ it("should make AJAX request with successful setting", function() { spyOn($, "ajax"); expect($.ajax).toHaveBeenCalledWith({ url:'db.php/realmadrids', type:'GET', dataType: "json", sucess: showResponse, error: showError }); }); });
Kar*_*iri 10
我的 Angular 7 项目中也有同样的问题。下面的步骤解决了这个问题。
在 spec.ts 文件的顶部添加以下代码
declare var $: any;
Run Code Online (Sandbox Code Playgroud)
Karma 插件 - jQuery 框架的适配器。
npm install karma-jquery --save-dev
Run Code Online (Sandbox Code Playgroud)
在 karma.conf.js 文件的“plugins”数组中添加“ karma-jquery ”
module.exports = function(config) {
config.set({
plugins: ['karma-jquery']
Run Code Online (Sandbox Code Playgroud)
在同一个文件中的框架数组中添加 jquery 的版本。
frameworks: ['jasmine', '@angular-devkit/build-angular','jquery-3.2.1']
Run Code Online (Sandbox Code Playgroud)
您需要包含 jQuery。
在这种情况下,$
它实际上是一个函数(来自 jQuery 库),因为 jQuery 尚未加载,您会收到此函数未定义的错误。
包含 jQuery 的方式与包含 Jasmine 库的方式相同。一种方法是使用 CDN:
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7857 次 |
最近记录: |