Having trouble testing a function versus storing it in a variable named `func` in Jasmine TypeScript

I'm currently experimenting with testing a function in Jasmine that has the following definition:

let main =  new function() {
    this.addIframe = () => {
        try {
            $("body").append("<iframe id='myiframe'> </iframe>");
            return true;
        } catch (err) {
            dosomthing();
            return false;
        }
    };
};

This specific type of function definition is necessary for setting up spies and other test suite configurations later on. However, I've encountered an issue when attempting to test the return statement using the code below:

  describe("Function AddIframe", ()=> {
    it("should return true if opened iframe",()=>{
        expect(addIframe()).toBe(true);
   });

The problem lies in getting 'Undefined' as a result, which I understand is due to how JavaScript operates with its two-step process.

I have tried switching to a conventional function definition but require the current format for my other tests. Even exploring putting it inside an object did not resolve the 'undefined' error, even when utilizing `this.method`.

If anyone can provide insight into what I might be overlooking here or suggest a workaround, I would greatly appreciate it.

Answer №1

When creating a new instance of the anonymous constructor function, the method addIframe is defined on the main object. To access this method, you should use main.addIframe() instead of just addIframe():

expect(main.addIframe()).toBe(true);

For a demonstration, check out this working example: http://jsfiddle.net/cCJ7Q/123/

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Include new items in the li tag using JavaScript

Hello, I am looking to dynamically add elements to an LI element when a link is clicked. I have successfully added elements to a DIV using the following code snippet: I came across a similar question on Which "href" value should I use for JavaScript links ...

Trying to find out which div is currently visible on the screen

As part of my project, I am working on implementing a swipe effect that involves moving the upper div based on calculated x and y coordinates. This creates a swipe-like visual effect by adjusting the wrapper's position with the screen width. However, ...

Showing JSON Array Values in a Table

I have created an array and am attempting to display its values in a table. Initially, my solution only displayed a single value from the array that matched an exact ID. You can see this implementation at (). Entering "jjones" would yield a result. I then ...

Is the `visibility: hidden` property not functioning as expected?

I am trying to conceal the script for the photoset until it is fully loaded, but unfortunately the code below does not seem to be effective: JavaScript $('.photoset-grid').photosetGrid({ rel: $('.photoset-grid').attr("data-id"), gutte ...

What is the best way to organize divs in a grid layout that adapts to different screen sizes, similar to the style

Is there a way to align multiple elements of varying heights against the top of a container, similar to what is seen on Wolfram's homepage? I noticed that they used a lot of JavaScript and absolute positioning in their code, but I'm wondering if ...

The children of the KendoUI treeview are showing up as null

Within my KendoUI treeview setup, the main nodes trigger a call to an MVC controller that checks for a nullable ID parameter before utilizing a different model. When accessing the URL: http://localhost:2949/Report/GetReportGroupAssignments The resulting ...

Managing dependencies in YARN or NPM by ensuring the installation of package versions that are compatible with specific dependency versions

Consider a scenario where the dependencies section in the package.json file looks like this: "dependencies": { "A": "1.0.0" } Now, let's say that the current version of package A is 3.0.0, but for our project we specifically need version 1.0 ...

Guide to loading a Canvas texture in a Wavefront OBJ using three.js

Hello there! I am currently working on a project where I am using three.js to display an obj file exported from Blender and map a texture from a canvas onto it. I managed to successfully display the image in obj format, but when I tried to apply the canvas ...

Tips for sending information to a JavaScript variable through AJAX requests

Hello there, I'm currently working on a project that involves posting data stored in a JavaScript variable using AJAX. Can anyone assist me with the correct syntax for this process? <div class="container-fluid"> <div class="card shadow m ...

Issue with deploying node.js on Heroku - Error (CANNOT GET/)

As I progress to the deployment phase of my code on Heroku, I have set up various routes in my server.js file, which I named script.js. This snippet shows the backend code: const express = require('express'); const bodyParser = require('bo ...

What is the most effective way to integrate webkitSpeechRecognition into a Vue.js project?

I found a demo at this link, but I'm having trouble understanding it. Can you provide a simple implementation? <div id="app"> <v-app id="inspire"> <v-container fluid> <v-layout row wrap justify-cen ...

The Array.sort method is limited to sorting based on a single criterion

I'm attempting to sort items first by their values and then alphabetically if they have the same value. function order(a, b, total) { if (total == 0) { return a.localeCompare(b) } else { return total; } } var thingsArr = { ...

The linking process in AngularJS is encountering difficulties when trying to interact with

I've already looked at similar questions, and my code seems correct based on the answers provided. It's a very simple beginner code. <html ng-app=""> <head> <title>Assignment</title> <script src=" ...

having trouble with my lambda function reading the basic json object

I recently joined Lambda and have been attempting to create a simple JSON object. However, I keep encountering an error that says "parsing error, unexpected token." Here is my code, which I have verified to be valid JSON: { "metadata": { ...

A helpful guide on displaying validation errors in a form using React JS

After creating a form and connecting it to the server, I encountered an issue with displaying validation errors below respective input fields. The error message response in case of validation error is as follows: "message": "ValidationError: confirmPasswor ...

The possibility exists that the onClick function may be null

I am encountering an issue with a props function that is showing an error message stating that the object may be null. import {Dropdown} from "react-bootstrap"; interface GenreButtonProps { key: number; id: number | null; genre: strin ...

The class value provided in v-bind in Vue is not valid

I've encountered a problem with my Vue application. The line :class=require ? 'require' : '' is returning the string 'require' even when the value of require is false. Can anyone help me figure out what's wrong? < ...

Aligning a navigation bar with a hamburger menu in the center

I recently implemented a hamburger menu with some cool animations into my site for mobile devices. Now, I am facing the challenge of centering the menu on desktop screens and it's proving to be tricky. The positioning is off, and traditional methods l ...

What is the best method for incorporating a delay within the upcoming subscribe block in Angular?

When subscribing to a service method, I have a sequence of actions that need to occur: displaying a toaster, resetting a form, and navigating to another component. However, I want to introduce a delay before the navigation so users can see the toaster mess ...

Encountered a 500 status error while trying to send data using Axios in Next.js framework

I'm attempting to create an authentication system using Next.js and TypeScript without utilizing NextAuth. When sending an object with 'username' and 'password' to the register endpoint, I received a 500 status code. Below is the ...