使用ngrx效果Angular5进行茉莉花登录测试

时间:2018-07-12 16:30:21

标签: angular jasmine ngrx

我正在测试使用茉莉和大理石的登录效果服务

这非常简单明了;用户发送登录信息(电子邮件和密码) 通过商店有效载荷达到效果

检查凭据的api终结点使用一个令牌进行响应,该令牌被解码为在effects服务中用作LoginSuccess类的构造函数参数。

我已经开始使用它,但是,我发现测试到达了“真实”效果服务并返回了对象“ userState”。

我也在测试中嘲笑的这个对象(以及对authService使用<>起作用)

如果对象不匹配(包括具有匹配的令牌,我必须从真实的登录名中复制这些对象),则测试失败,如果有人可以提供一些指针,我对此会有些茫然

效果文件:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N1 100

#define M1 100

void fillMatrix(int A[][M1], int N, int M);
int sortMatrix(int A[][M1],int rowsize, int colsize);
void displayArray(int A[][M1], int N, int M);

int main(void)
{
    int array[N1][M1] = {0};

    fillMatrix(array, N1, M1);

    displayArray(array, N1, M1);

    //sortMatrix(array, N1, M1);

    return  0;
}

void fillMatrix(int A[][M1], int N, int M)
{
    int rows = 0, columns = 0;
//ASK FOR ROWS
    printf("Enter a number of rows: ");
    scanf("%i", &rows);

    if(rows < 0 && rows >= 100)
    {
        printf("Invalid Input.\n");
        printf("Enter a number of rows: ");
        scanf("%i", &rows);
    }
//ASK FOR COLUMNS
    printf("Enter a number of columns: ");
    scanf("%i", &columns);

    if(columns < 0 && columns >= 100)
    {
        printf("Invalid Input.\n");
        printf("Enter a number of columns: ");
        scanf("%i", &columns);
    }
//FILLS ARRAY W/ RANDOM INT VALUES BETWEEN 0 AND 100
    srand(time(NULL));

    for(int i = 0; i < rows; i++)
    {
        for(int j = 0; j < columns; j++)
        {
            A[i][j] = 0 + rand() % 100;
        }
    }
}

/*int sortMatrix(int A[][M1],int rowsize, int colsize)
{
    int temp = 0;
    for(int i = 0; i < rowsize; i++)
    {
        for (int j = 0 ; j < colsize; j++)
        {
            if(A[i] > A[j])
            {
                temp = A[i];
                A[i] = A[j];
                A[j] = temp;
            }
        }
    }
    return 0;
}*/

void displayArray(int A[][M1], int N, int M)
{
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < M; j++)
        {
            printf("%i ", A[i][j]);
        }
    }
}

测试文件:

createSpyObj

1 个答案:

答案 0 :(得分:0)

基本上,这与解码从authService发送的响应有关 并将数据分配给userState的属性:

  //Decode the returned jwt
     console.log(data)//This would be my mockdetails
      let decodedData = jwt_decode(data.token);
      console.log(decodedData)//This would have the details from logged in user
      let userState:loginReducer.State = {
        isAuthenticated: true,
        token:data.token,
        name:decodedData.name//this is from logged in user throws error
      }
console.log(userState)//This would have the details from logged in user

这似乎是在做;解码并应用于userState对象时,将实际登录的用户信息提取到内存中

我看到我不需要解码就可以从返回的对象中获取用户名:

map((data)=> {
 let userState:loginReducer.State = {
    isAuthenticated: true,
    token:data.token,
    name:data.name
  }
})

所以它可以工作,但是如果我必须解码,我无法解决该怎么办?