我正在尝试用RxJS弹珠创建一个简单的测试。
我正在使用摩卡和柴。
我正在实例化一个新的测试调度程序,我不想使用" testScheduler.createHotObservable方法"因为我想使用我自己的Observable," Observable.of(4)"
const testScheduler = new TestScheduler(assert.deepEqual.bind(assert));
const expected = "a";
const expectedStateMap = {
a: 4
};
testScheduler.expectObservable(Observable.of(4)).toBe(expected, expectedStateMap);
testScheduler.flush();
这是错误:
AssertionError: expected [ Array(2) ] to deeply equal [ Array(1) ]
+ expected - actual
"notification": {
"error": [undefined]
"hasValue": true
"kind": "N"
- "value": 4
+ "value": "4"
}
}
- {
- "frame": 0
- "notification": {
- "error": [undefined]
- "hasValue": false
- "kind": "C"
- "value": [undefined]
- }
- }
]
at TestScheduler.flush (node_modules/rxjs/src/testing/TestScheduler.ts:135:12)
任何想法有什么不对?
答案 0 :(得分:1)
是的,它不起作用。 hot
,cold
可观察创建方法的作用是,在testscheduler内部基于给定的大理石和setup
创建可观察对象。当testcheduler通过flush
执行时,它会迭代所有可观察和刷新。如果提供了custom observable,则testscheduler不知道那些可观察的是否存在,而不是那些可以观察到的。
这只是当前测试调度程序实现的限制 - 除非猴子补丁测试调度程序接受自定义可观察性,否则它可能无法按预期工作。
答案 1 :(得分:1)
你忘了填写Observable。
#include <iostream>
#include <string>
#include <array>
#include <cstdlib>
#include <fstream>
using namespace std;
ifstream read;
ofstream write;
void store_names(string a [10])
{
string storage;
read.open("Data.txt"); //open file
if (read.is_open()==true)// check to see if file is open
{
for (int i = 0; i < 10; i++)
{
read >> a[i];
read.ignore(256, '\n');//store file string into array
cout << a[i] << endl;
}
}
}
void store_payments(double payment [10][3])
{
read.open("Data.txt");
if (read.is_open() == true)
{
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 3; j++)
{
read.ignore(7, '\n');
read >> payment[i][j];
cout << payment[j];
}
}
}
}
int main()
{
string name_array[10];
double payment[10][3];
store_names(name_array);
store_payments(payment);
system("pause");
return 0;
}
可以重构为
const expected = "a";
const expectedStateMap = {
a: 4
};